Remove an unused PageGroup function
https://bugs.webkit.org/show_bug.cgi?id=127327

Reviewed by Andreas Kling.

* WebCore.exp.in:
* page/PageGroup.cpp:
* page/PageGroup.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162396 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove a lot of the current Timelines code to make room for a new implementation.

https://bugs.webkit.org/show_bug.cgi?id=123368

Reviewed by Joseph Pecoraro.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/ContentView.js:
(WebInspector.ContentView):
(WebInspector.ContentView.isViewable):
* UserInterface/DashboardView.js:
(WebInspector.DashboardView.prototype._networkItemWasClicked):
* UserInterface/InspectorFrontendAPI.js:
(InspectorFrontendAPI.setTimelineProfilingEnabled):
(InspectorFrontendAPI.stopProfilingJavaScript):
* UserInterface/InstrumentSidebarPanel.js: Removed.
* UserInterface/Main.html:
* UserInterface/Main.js:
(WebInspector.contentLoaded):
(WebInspector.sidebarPanelForRepresentedObject):
(WebInspector.openURL):
* UserInterface/Object.js:
(WebInspector.Object.addEventListener):
* UserInterface/TimelineManager.js:
(WebInspector.TimelineManager):
(WebInspector.TimelineManager.prototype.startRecording):
(WebInspector.TimelineManager.prototype.eventRecorded.processRecord):
(WebInspector.TimelineManager.prototype.eventRecorded):
(WebInspector.TimelineManager.prototype.objectForCookie):
(WebInspector.TimelineManager.prototype._addRecord):
* UserInterface/TimelinesObject.js: Removed.
* UserInterface/TimelineOverview.css: Removed.
* UserInterface/TimelineOverview.js: Removed.
* UserInterface/TimelineSidebarPanel.css: Added.
* UserInterface/TimelineSidebarPanel.js: Added.
(WebInspector.TimelineSidebarPanel):
* UserInterface/TimelinesContentView.css: Removed.
* UserInterface/TimelinesContentView.js: Removed.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162397 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Change how the load and content ready event timestamps are tracked.

https://bugs.webkit.org/show_bug.cgi?id=123356

Reviewed by Joseph Pecoraro.

* UserInterface/DashboardManager.js:
(WebInspector.DashboardManager.prototype._updateTime): Use the timestamps on the main frame.
* UserInterface/Frame.js:
(WebInspector.Frame):
(WebInspector.Frame.prototype.get domContentReadyEventTimestamp): Added.
(WebInspector.Frame.prototype.get loadEventTimestamp): Added.
(WebInspector.Frame.prototype.markDOMContentReadyEvent): Added.
(WebInspector.Frame.prototype.markLoadEvent): Added.
* UserInterface/TimelineManager.js:
(WebInspector.TimelineManager.prototype.eventRecorded.processRecord): Use markLoadEvent and markDOMContentReadyEvent.
Do it for all frames, not just the main frame.
(WebInspector.TimelineManager.prototype.pageDidLoad): Call markLoadEvent on the Frame.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162398 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Track callFrames and sourceCodeLocation per TimelineRecord.

https://bugs.webkit.org/show_bug.cgi?id=123359

Reviewed by Joseph Pecoraro.

* UserInterface/LayoutTimelineRecord.js:
(WebInspector.LayoutTimelineRecord): Pass callFrames and sourceCodeLocation to superclass.
* UserInterface/ScriptTimelineRecord.js:
(WebInspector.ScriptTimelineRecord): Pass callFrames and sourceCodeLocation to superclass.
* UserInterface/TimelineManager.js:
(WebInspector.TimelineManager.prototype.eventRecorded.processRecord): Add "Payload" suffix to better track what is a protocol object.
Pass the callFrames and sourceCodeLocation to all the new TimelineRecords.
(WebInspector.TimelineManager.prototype.eventRecorded): Add "Payload" suffix.
* UserInterface/TimelineRecord.js:
(WebInspector.TimelineRecord):
(WebInspector.TimelineRecord.prototype.get callFrames): Added.
(WebInspector.TimelineRecord.prototype.get initiatorCallFrame): Added.
(WebInspector.TimelineRecord.prototype.get sourceCodeLocation): Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162399 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add support for multiple Timeline recordings.

We also don't explicitly add ResourceTimelineRecords anymore. These will be tracked automatically in a later patch.

https://bugs.webkit.org/show_bug.cgi?id=123366

Reviewed by Joseph Pecoraro.

* UserInterface/DashboardManager.js:
(WebInspector.DashboardManager.prototype._mainResourceDidChange): Check for currentRecording.
* UserInterface/InspectorFrontendAPI.js:
(InspectorFrontendAPI.isTimelineProfilingEnabled): Check for currentRecording.
* UserInterface/Main.html:
* UserInterface/TimelineManager.js:
(WebInspector.TimelineManager):
(WebInspector.TimelineManager.prototype.get currentRecording): Added.
(WebInspector.TimelineManager.prototype.startRecording): Make a new recording and push it onto the recording array.
Add the current recording to the event.
(WebInspector.TimelineManager.prototype.stopRecording): Add the current recording to the event.
(WebInspector.TimelineManager.prototype.eventRecorded.processRecord): Check for currentRecording. Add the markers
to the current recording.
(WebInspector.TimelineManager.prototype._addRecord): Add the record to the current recording.
(WebInspector.TimelineManager.prototype._startAutoRecording): Clean up. Don't add ResourceTimelineRecord. Clear recordings.
(WebInspector.TimelineManager.prototype._stopAutoRecordingSoon): Check for _currentRecording.
(WebInspector.TimelineManager.prototype._resetAutoRecordingDeadTimeTimeout): Ditto.
(WebInspector.TimelineManager.prototype._mainResourceDidChange): Don't add ResourceTimelineRecord anymore.
(WebInspector.TimelineManager.prototype._resourceWasAdded): Removed.
* UserInterface/TimelineRecording.js: Added.
(WebInspector.TimelineRecording): Added.
(WebInspector.TimelineRecording.prototype.addEventMarker): Added.
(WebInspector.TimelineRecording.prototype.addRecord): Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162400 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Implement TimelineRecording and per-call-site timelines.

Keep track of timeline records per global timeline and per source code location.
This will be used to display them in the UI in later patches.

https://bugs.webkit.org/show_bug.cgi?id=123367

Reviewed by Joseph Pecoraro.

* UserInterface/Main.html:
* UserInterface/SourceCodeTimeline.js: Added.
(WebInspector.SourceCodeTimeline):
(WebInspector.SourceCodeTimeline.prototype.get sourceCode):
(WebInspector.SourceCodeTimeline.prototype.get sourceCodeLocation):
(WebInspector.SourceCodeTimeline.prototype.get recordType):
(WebInspector.SourceCodeTimeline.prototype.get recordEventType):
* UserInterface/Timeline.js: Added.
(WebInspector.Timeline):
(WebInspector.Timeline.prototype.get records):
(WebInspector.Timeline.prototype.addRecord):
* UserInterface/TimelineRecording.js:
(WebInspector.TimelineRecording):
(WebInspector.TimelineRecording.prototype.get timelines): Added.
(WebInspector.TimelineRecording.prototype.sourceCodeTimelinesForSourceCode): Added.
(WebInspector.TimelineRecording.prototype.addEventMarker): Implemented.
(WebInspector.TimelineRecording.prototype.addRecord): Implemented.
(WebInspector.TimelineRecording.prototype._keyForRecord): Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162401 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Correctly track time bounds of WebInspector.Timeline and WebInspector.TimelineRecording.

The startTime and endTime were not correct when Network timeline needed to be taken into
account (due to its dynamic loading nature.) This creates a network Timeline for the purposes
of tracking the ResourceTimelineRecords and getting accurate start and end times.

Also changes the way TimelineRecord tracks the inactive portion of time, needed for later
work on the timeline graphs.

https://bugs.webkit.org/show_bug.cgi?id=126676

Reviewed by Joseph Pecoraro.

* UserInterface/ResourceTimelineRecord.js:
(WebInspector.ResourceTimelineRecord.prototype.get updatesDynamically):
(WebInspector.ResourceTimelineRecord.prototype.get usesActiveStartTime):
(WebInspector.ResourceTimelineRecord.prototype.get startTime):
(WebInspector.ResourceTimelineRecord.prototype.get activeStartTime):
(WebInspector.ResourceTimelineRecord.prototype.get endTime):
* UserInterface/Timeline.js:
(WebInspector.Timeline):
(WebInspector.Timeline.prototype.get startTime):
(WebInspector.Timeline.prototype.get endTime):
(WebInspector.Timeline.prototype.addRecord):
(WebInspector.Timeline.prototype._updateTimesIfNeeded):
(WebInspector.Timeline.prototype._recordUpdated):
* UserInterface/TimelineRecord.js:
(WebInspector.TimelineRecord.prototype.get startTime):
(WebInspector.TimelineRecord.prototype.get activeStartTime):
(WebInspector.TimelineRecord.prototype.get endTime):
(WebInspector.TimelineRecord.prototype.get inactiveDuration):
(WebInspector.TimelineRecord.prototype.get activeDuration):
(WebInspector.TimelineRecord.prototype.get updatesDynamically):
(WebInspector.TimelineRecord.prototype.get usesActiveStartTime):
* UserInterface/TimelineRecording.js:
(WebInspector.TimelineRecording.prototype._timelineTimesUpdated):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162402 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Start fleshing out the new TimelineSidebarPanel and TimelineContentView.

https://bugs.webkit.org/show_bug.cgi?id=124003

Reviewed by Joseph Pecoraro.

* UserInterface/ContentView.js:
(WebInspector.ContentView):
(WebInspector.ContentView.isViewable):
* UserInterface/FrameContentView.js:
* UserInterface/Images/CloseTimeline.png: Added.
* UserInterface/Images/CloseTimeline@2x.png: Added.
* UserInterface/Images/ColorsLarge.png: Added.
* UserInterface/Images/ColorsLarge@2x.png: Added.
* UserInterface/Images/NetworkLarge.png: Added.
* UserInterface/Images/NetworkLarge@2x.png: Added.
* UserInterface/Images/ScriptLarge.png: Added.
* UserInterface/Images/ScriptLarge@2x.png: Added.
* UserInterface/Main.html:
* UserInterface/Main.js:
(WebInspector.sidebarPanelForRepresentedObject):
(WebInspector._revealAndSelectRepresentedObjectInNavigationSidebar):
* UserInterface/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype.showDefaultContentView):
* UserInterface/ResourceClusterContentView.js:
* UserInterface/TimelineContentView.css: Added.
(.content-view.timeline > .view-container):
* UserInterface/TimelineContentView.js: Added.
(WebInspector.TimelineContentView):
* UserInterface/TimelineIcons.css: Renamed from Source/WebInspectorUI/UserInterface/InstrumentIcons.css.
(.network-icon.large .icon): Added.
(.colors-icon.large .icon): Added.
(.script-icon.large .icon): Added.
* UserInterface/TimelineSidebarPanel.css:
(.sidebar > .panel.timeline > .navigation-bar):
(.sidebar > .panel.timeline > .title-bar):
(.sidebar > .panel.timeline > .title-bar.timelines):
(.sidebar > .panel.timeline > .title-bar.timeline-events):
(.sidebar > .panel.timeline > .timelines-content):
(.sidebar > .panel.timeline > .timelines-content .close-button):
(.sidebar > .panel.timeline > .timelines-content li.item.selected .close-button):
(.sidebar > .panel.timeline > .timelines-content .close-button:active):
(.sidebar > .panel.timeline > .content):
* UserInterface/TimelineSidebarPanel.js:
(WebInspector.TimelineSidebarPanel.createTimelineTreeElement):
(WebInspector.TimelineSidebarPanel):
(WebInspector.TimelineSidebarPanel.prototype.showDefaultContentView):
(WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject):
(WebInspector.TimelineSidebarPanel.prototype.get contentTreeOutlineLabel):
(WebInspector.TimelineSidebarPanel.prototype.set contentTreeOutlineLabel):
(WebInspector.TimelineSidebarPanel.prototype.showTimelineOverview):
(WebInspector.TimelineSidebarPanel.prototype.showTimelineView):
(WebInspector.TimelineSidebarPanel.prototype._timelinesTreeElementSelected):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162403 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Start fleshing out the Overview Timeline view.

This gets the overview populating in the Timeline sidebar. The graph side is still empty.

https://bugs.webkit.org/show_bug.cgi?id=124005

Reviewed by Joseph Pecoraro.

* Localizations/en.lproj/localizedStrings.js: Updated.
* UserInterface/Frame.js:
(WebInspector.Frame.prototype.addResource):
* UserInterface/Images/TimelineRecordAnimation.svg: Added.
* UserInterface/Images/TimelineRecordEvent.svg: Added.
* UserInterface/Images/TimelineRecordLayout.svg: Added.
* UserInterface/Images/TimelineRecordPaint.svg: Added.
* UserInterface/Images/TimelineRecordScriptEvaluated.svg: Added.
* UserInterface/Images/TimelineRecordStyle.svg: Added.
* UserInterface/Images/TimelineRecordTimer.svg: Added.
* UserInterface/Main.html:
* UserInterface/OverviewTimelineView.js: Added.
(WebInspector.OverviewTimelineView):
(WebInspector.OverviewTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
(WebInspector.OverviewTimelineView.prototype._childFrameWasAdded):
(WebInspector.OverviewTimelineView.prototype._mainResourceDidChange):
(WebInspector.OverviewTimelineView.prototype._provisionalResourceWasAdded):
(WebInspector.OverviewTimelineView.prototype._resourceWasAdded):
(WebInspector.OverviewTimelineView.prototype._compareTreeElementsByDetails):
(WebInspector.OverviewTimelineView.prototype._compareTreeElementsByStartTime):
(WebInspector.OverviewTimelineView.prototype._insertTreeElement):
(WebInspector.OverviewTimelineView.prototype._addResourceToTreeIfNeeded):
(WebInspector.OverviewTimelineView.prototype._sourceCodeTimelineAdded):
(WebInspector.OverviewTimelineView.prototype._treeElementSelected):
* UserInterface/SourceCodeTimelineTreeElement.js: Added.
(WebInspector.SourceCodeTimelineTreeElement):
(WebInspector.SourceCodeTimelineTreeElement.prototype.get sourceCodeTimeline):
* UserInterface/TimelineContentView.js:
(WebInspector.TimelineContentView.createPathComponent):
(WebInspector.TimelineContentView):
(WebInspector.TimelineContentView.prototype.showOverviewTimelineView):
(WebInspector.TimelineContentView.prototype.showTimelineView):
(WebInspector.TimelineContentView.prototype.get supportsSplitContentBrowser):
(WebInspector.TimelineContentView.prototype.get selectionPathComponents):
(WebInspector.TimelineContentView.prototype._pathComponentSelected):
(WebInspector.TimelineContentView.prototype._showTimelineView):
(WebInspector.TimelineContentView.prototype._recordingReset):
* UserInterface/TimelineIcons.css:
(.style-record .icon): Added.
(.layout-record .icon): Added.
(.paint-record .icon): Added.
(.evaluated-record .icon): Added.
(.event-record .icon): Added.
(.timer-record .icon): Added.
(.animation-record .icon): Added.
* UserInterface/TimelineView.css: Added.
(.timeline-view):
* UserInterface/TimelineView.js: Added.
(WebInspector.TimelineView):
(WebInspector.TimelineView.prototype.get navigationSidebarTreeOutline):
(WebInspector.TimelineView.prototype.get navigationSidebarTreeOutlineLabel):
(WebInspector.TimelineView.prototype.reset):
(WebInspector.TimelineView.prototype.shown):
(WebInspector.TimelineView.prototype.hidden):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162404 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add a synchronized DataGrid to the OverviewTimelineView.

The DataGrid is synchronized with the sidebar TreeOutline to appear as one when the view
and sidebar are both showing. The two scroll, expand and collapse in sync when the view
is showing. When the view is not showing the sidebar can scroll independently.

https://bugs.webkit.org/show_bug.cgi?id=124429

Reviewed by Joseph Pecoraro.

* UserInterface/DataGrid.js:
(WebInspector.DataGrid):
(WebInspector.DataGrid.createSortableDataGrid):
(WebInspector.DataGrid.prototype._copyTextForDataGridNode):
(WebInspector.DataGridNode.prototype.createCellContent):
Handle undefined/null cells better by substituting empty strings.

(WebInspector.DataGridNode.prototype.collapse):
(WebInspector.DataGridNode.prototype.expand):
Fire events on the DataGrid for expand and collapse.

* UserInterface/Main.html: Include TreeOutlineDataGridSynchronizer.js.

* UserInterface/NavigationSidebarPanel.css:
(.sidebar > .panel.navigation > .content): Shorten by 1px to match the content view height.
Needed to keep scrolling in sync. The clipping looks better too.

* UserInterface/OverviewTimelineView.css:
(.timeline-view.overview > .data-grid):
(.timeline-view.overview > .data-grid table.header):
(.timeline-view.overview > .data-grid .data-container):
Style the DataGrid to to not have a header.

* UserInterface/OverviewTimelineView.js:
(WebInspector.OverviewTimelineView):
(WebInspector.OverviewTimelineView.prototype.shown):
(WebInspector.OverviewTimelineView.prototype._addResourceToTreeIfNeeded):
(WebInspector.OverviewTimelineView.prototype._sourceCodeTimelineAdded):
Create the DataGrid and some placeholder nodes. Hook up TreeOutlineDataGridSynchronizer.

* UserInterface/TimelineContentView.css:
(.content-view.timeline > .view-container > .timeline-view > .data-grid td):
(.content-view.timeline > .view-container > .timeline-view > .data-grid table.data):
Style the DataGrid to match the height of TreeElements in the sidebar.

* UserInterface/TimelineSidebarPanel.css:
(.sidebar > .panel.timeline.timeline-content-view-showing > .content):
Hide the scrollbar off the right when the view is showing. The view will show the scrollbar.

* UserInterface/TimelineSidebarPanel.js:
(WebInspector.TimelineSidebarPanel):
(WebInspector.TimelineSidebarPanel.prototype._timelinesTreeElementSelected):
(WebInspector.TimelineSidebarPanel.prototype._contentBrowserCurrentContentViewDidChange):

* UserInterface/TreeOutline.js:
(TreeOutline.prototype.removeChildAtIndex):
(TreeOutline.prototype.removeChildren):
(TreeOutline.prototype.removeChildrenRecursive):
(TreeElement.prototype.set hidden):
Add event callbacks for onhidden and onremove.

* UserInterface/TreeOutlineDataGridSynchronizer.js: Added.
(WebInspector.TreeOutlineDataGridSynchronizer):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype.associate):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype.synchronize):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeOutlineScrolled):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridScrolled):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeSelected):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeExpanded):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeCollapsed):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementSelected):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementAdded):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementRemoved):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementExpanded):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementCollapsed):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementHiddenChanged):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162405 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Improve scroll performance of WebInspector.TreeOutlineDataGridSynchronizer.

https://bugs.webkit.org/show_bug.cgi?id=126660

Reviewed by Joseph Pecoraro.

* UserInterface/TreeOutlineDataGridSynchronizer.js:
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeOutlineScrolled):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridScrolled):
Ignore scroll events triggered by our internal use of setting scrollTop.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162406 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Clean up and refactor TimelineDecorations into TimelineRuler.

https://bugs.webkit.org/show_bug.cgi?id=125709

Reviewed by Joseph Pecoraro.

* UserInterface/Main.html:
* UserInterface/OverviewTimelineView.css:
(.timeline-view.overview > .timeline-ruler):
(.timeline-view.overview > .timeline-ruler > .header):
(.timeline-view.overview > .timeline-ruler > .event-markers):
Updated class names and border sides.

* UserInterface/OverviewTimelineView.js:
(WebInspector.OverviewTimelineView):
(WebInspector.OverviewTimelineView.prototype.updateLayout):
Call updateLayout on the TimelineRuler.

* UserInterface/TimelineRuler.css: Renamed from Source/WebInspectorUI/UserInterface/TimelineDecorations.css.
(.timeline-ruler):
(.timeline-ruler > .header):
(.timeline-ruler > .header > .divider):
(.timeline-ruler > .header > .divider > .label):
(.timeline-ruler > .event-markers):
(.timeline-ruler > .event-markers > .event-marker-tooltip):
(.timeline-ruler > .event-markers > .event-marker):
(.timeline-ruler > .event-markers > .event-marker.load-event):
(.timeline-ruler > .event-markers > .event-marker.dom-content-event):
(.timeline-ruler > .event-markers > .event-marker.timestamp):
Updated class names and border sides.

* UserInterface/TimelineRuler.js: Renamed from Source/WebInspectorUI/UserInterface/TimelineDecorations.js.
(WebInspector.TimelineRuler):
(WebInspector.TimelineRuler.prototype.get element):
(WebInspector.TimelineRuler.prototype.get headerElement):
(WebInspector.TimelineRuler.prototype.get allowsClippedLabels):
(WebInspector.TimelineRuler.prototype.set allowsClippedLabels):
(WebInspector.TimelineRuler.prototype.get zeroTime):
(WebInspector.TimelineRuler.prototype.set zeroTime):
(WebInspector.TimelineRuler.prototype.get startTime):
(WebInspector.TimelineRuler.prototype.set startTime):
(WebInspector.TimelineRuler.prototype.get duration):
(WebInspector.TimelineRuler.prototype.set duration):
(WebInspector.TimelineRuler.prototype.get endTime):
(WebInspector.TimelineRuler.prototype.set endTime):
(WebInspector.TimelineRuler.prototype.get secondsPerPixel):
(WebInspector.TimelineRuler.prototype.set secondsPerPixel):
(WebInspector.TimelineRuler.prototype.updateLayout.removeDividerAndSelectNext):
(WebInspector.TimelineRuler.prototype.updateLayout):
(WebInspector.TimelineRuler.prototype._needsLayout):
(WebInspector.TimelineRuler.prototype._recalculate):
Refactor so the times are stored on TimelineRuler and not passed in each time an update is needed.
Support dividers that don't always start at the zero position, allowing a sliding time ruler.
Support for a non-pinned ruler where the end time is not fixed and the scale is specified in
seconds-per-pixel.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162407 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add the start of the TimelineOverview class.

TimelineOverview currently has a time ruler and tracks the current recording time.

https://bugs.webkit.org/show_bug.cgi?id=125878

Reviewed by Joseph Pecoraro.

* UserInterface/Main.html:
* UserInterface/TimelineContentView.css:
(.content-view.timeline > .timeline-overview):
* UserInterface/TimelineContentView.js:
(WebInspector.TimelineContentView):
(WebInspector.TimelineContentView.prototype.updateLayout):
(WebInspector.TimelineContentView.prototype._update):
(WebInspector.TimelineContentView.prototype._recordingStarted):
(WebInspector.TimelineContentView.prototype._recordingStopped):
(WebInspector.TimelineContentView.prototype._recordingReset):
* UserInterface/TimelineManager.js:
(WebInspector.TimelineManager.prototype.eventRecorded.processRecord):
(WebInspector.TimelineManager.prototype.eventRecorded):
* UserInterface/TimelineMarker.js: Renamed from Source/WebInspectorUI/UserInterface/TimelineEventMarker.js.
(WebInspector.TimelineMarker):
(WebInspector.TimelineMarker.prototype.get time):
(WebInspector.TimelineMarker.prototype.set time):
(WebInspector.TimelineMarker.prototype.get type):
* UserInterface/TimelineOverview.css: Added.
(.timeline-overview > .scroll-container):
(.timeline-overview > .scroll-container > .timeline-ruler):
* UserInterface/TimelineOverview.js: Added.
(WebInspector.TimelineOverview):
(WebInspector.TimelineOverview.prototype.get element):
(WebInspector.TimelineOverview.prototype.get startTime):
(WebInspector.TimelineOverview.prototype.set startTime):
(WebInspector.TimelineOverview.prototype.get secondsPerPixel):
(WebInspector.TimelineOverview.prototype.set secondsPerPixel):
(WebInspector.TimelineOverview.prototype.get endTime):
(WebInspector.TimelineOverview.prototype.set endTime):
(WebInspector.TimelineOverview.prototype.addMarker):
(WebInspector.TimelineOverview.prototype.revealMarker):
(WebInspector.TimelineOverview.prototype.updateLayout):
(WebInspector.TimelineOverview.prototype._updateElementWidth):
(WebInspector.TimelineOverview.prototype._needsLayout):
* UserInterface/TimelineRecording.js:
(WebInspector.TimelineRecording.prototype.get startTime):
(WebInspector.TimelineRecording.prototype.get endTime):
(WebInspector.TimelineRecording.prototype.reset):
* UserInterface/TimelineRuler.css:
(.timeline-ruler > .markers):
(.timeline-ruler > .markers > .marker):
(.timeline-ruler > .markers > .marker.current-time):
(.timeline-ruler > .markers > .marker.current-time::before):
(.timeline-ruler > .markers > .marker.load-event):
(.timeline-ruler > .markers > .marker.dom-content-event):
(.timeline-ruler > .markers > .marker.timestamp):
* UserInterface/TimelineRuler.js:
(WebInspector.TimelineRuler):
(WebInspector.TimelineRuler.prototype.updateLayout):
(WebInspector.TimelineRuler.prototype._needsLayout):
(WebInspector.TimelineRuler.prototype._needsMarkerLayout.update):
(WebInspector.TimelineRuler.prototype._needsMarkerLayout):
(WebInspector.TimelineRuler.prototype._recalculate):
(WebInspector.TimelineRuler.prototype._updateLeftPositionOfElement):
(WebInspector.TimelineRuler.prototype._updateMarkers):
(WebInspector.TimelineRuler.prototype._timelineMarkerTimeChanged):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162408 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Support scroll to zoom in TimelineOverview.

https://bugs.webkit.org/show_bug.cgi?id=125909

Reviewed by Joseph Pecoraro.

* UserInterface/TimelineOverview.js:
(WebInspector.TimelineOverview):
(WebInspector.TimelineOverview.prototype._handleWheelEvent):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162409 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Implement time range selection for TimelineOverview and TimelineRuler.

https://bugs.webkit.org/show_bug.cgi?id=126035

Reviewed by Joseph Pecoraro.

* UserInterface/TimelineContentView.js:
(WebInspector.TimelineContentView.prototype._update):
(WebInspector.TimelineContentView.prototype._recordingReset):
Properly update start time and the selection start time on reset.

* UserInterface/TimelineOverview.js:
(WebInspector.TimelineOverview):
(WebInspector.TimelineOverview.prototype.get selectionStartTime):
(WebInspector.TimelineOverview.prototype.set selectionStartTime):
(WebInspector.TimelineOverview.prototype.get selectionDuration):
(WebInspector.TimelineOverview.prototype.set selectionDuration):
Added selection getters and setters.

* UserInterface/TimelineRuler.css:
(.timeline-ruler.allows-time-range-selection):
(.timeline-ruler > *):
(.timeline-ruler > .header):
(.timeline-ruler > .selection-drag):
(.timeline-ruler > .selection-drag:active):
(.timeline-ruler > .selection-handle):
(.timeline-ruler > .selection-handle.left):
(.timeline-ruler > .selection-handle.right):
(.timeline-ruler > .shaded-area):
(.timeline-ruler > .shaded-area.left):
(.timeline-ruler > .shaded-area.right):
Added styles for the selection elements and tweaked pointer-events to allow
events on elements we expect.

* UserInterface/TimelineRuler.js:
(WebInspector.TimelineRuler):
(WebInspector.TimelineRuler.prototype.get allowsTimeRangeSelection): Added.
(WebInspector.TimelineRuler.prototype.set allowsTimeRangeSelection): Added.
(WebInspector.TimelineRuler.prototype.get selectionStartTime): Added.
(WebInspector.TimelineRuler.prototype.set selectionStartTime): Added.
(WebInspector.TimelineRuler.prototype.get selectionEndTime): Added.
(WebInspector.TimelineRuler.prototype.set selectionEndTime): Added.
(WebInspector.TimelineRuler.prototype.updateLayout):
(WebInspector.TimelineRuler.prototype._needsMarkerLayout.update):
(WebInspector.TimelineRuler.prototype._needsMarkerLayout):
(WebInspector.TimelineRuler.prototype._needsSelectionLayout.update):
(WebInspector.TimelineRuler.prototype._needsSelectionLayout):
(WebInspector.TimelineRuler.prototype._recalculate):
(WebInspector.TimelineRuler.prototype._updatePositionOfElement):
(WebInspector.TimelineRuler.prototype._updateMarkers):
(WebInspector.TimelineRuler.prototype._updateSelection): Added.
(WebInspector.TimelineRuler.prototype._dispatchTimeRangeSelectionChangedEvent):
(WebInspector.TimelineRuler.prototype._timelineMarkerTimeChanged):
(WebInspector.TimelineRuler.prototype._handleMouseDown): Added.
(WebInspector.TimelineRuler.prototype._handleMouseMove): Added.
(WebInspector.TimelineRuler.prototype._handleMouseUp): Added.
(WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseDown): Added.
(WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseMove): Added.
(WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseUp): Added.
Create selection elements and handle mouse events for drag and move.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162410 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Update the current WebInspector.TimelineView when time range changes.

https://bugs.webkit.org/show_bug.cgi?id=126667

Reviewed by Joseph Pecoraro.

* UserInterface/TimelineContentView.js:
(WebInspector.TimelineContentView.prototype._showTimelineView):
(WebInspector.TimelineContentView.prototype._update):
(WebInspector.TimelineContentView.prototype._startUpdatingCurrentTime):
(WebInspector.TimelineContentView.prototype._stopUpdatingCurrentTime):
(WebInspector.TimelineContentView.prototype._recordingStarted):
(WebInspector.TimelineContentView.prototype._recordingStopped):
(WebInspector.TimelineContentView.prototype._recordingReset):
(WebInspector.TimelineContentView.prototype._timeRangeSelectionChanged):
* UserInterface/TimelineOverview.js:
(WebInspector.TimelineOverview):
(WebInspector.TimelineOverview.prototype.updateLayout):
(WebInspector.TimelineOverview.prototype.updateLayoutIfNeeded):
(WebInspector.TimelineOverview.prototype._updateElementWidth):
(WebInspector.TimelineOverview.prototype._handleWheelEvent):
(WebInspector.TimelineOverview.prototype._timeRangeSelectionChanged):
* UserInterface/TimelineRuler.js:
(WebInspector.TimelineRuler.prototype.updateLayoutIfNeeded):
* UserInterface/TimelineView.js:
(WebInspector.TimelineView):
(WebInspector.TimelineView.prototype.get zeroTime):
(WebInspector.TimelineView.prototype.set zeroTime):
(WebInspector.TimelineView.prototype.get startTime):
(WebInspector.TimelineView.prototype.set startTime):
(WebInspector.TimelineView.prototype.get endTime):
(WebInspector.TimelineView.prototype.set endTime):
(WebInspector.TimelineView.prototype.get currentTime):
(WebInspector.TimelineView.prototype.set currentTime.checkIfLayoutIsNeeded):
(WebInspector.TimelineView.prototype.set currentTime):
(WebInspector.TimelineView.prototype.updateLayout):
(WebInspector.TimelineView.prototype.updateLayoutIfNeeded):
(WebInspector.TimelineView.prototype.needsLayout):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162411 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Implement bar graph rendering for WebInspector.OverviewTimelineView.

https://bugs.webkit.org/show_bug.cgi?id=126831

Reviewed by Joseph Pecoraro.

* UserInterface/Main.html: Added new files.

* UserInterface/OverviewTimelineView.css:
(.timeline-view.overview > .data-grid td.graph-column):
(.timeline-view.overview > .data-grid td.graph-column > div):
(.timeline-view.overview > .data-grid td.graph-column .timeline-record-bar):
Position the bars in the DataGrid cells.

* UserInterface/OverviewTimelineView.js:
(WebInspector.OverviewTimelineView.prototype.updateLayout):
(WebInspector.OverviewTimelineView.prototype._addResourceToTreeIfNeeded):
(WebInspector.OverviewTimelineView.prototype._sourceCodeTimelineAdded):
Create the proper DataGridNodes for resources and source code timelines.

* UserInterface/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode):
(WebInspector.ResourceTimelineDataGridNode.prototype.get records):
(WebInspector.ResourceTimelineDataGridNode.prototype.get resource):
(WebInspector.ResourceTimelineDataGridNode.prototype.get data):
(WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
(WebInspector.ResourceTimelineDataGridNode.prototype.refresh):
(WebInspector.ResourceTimelineDataGridNode.prototype._needsRefresh):
(WebInspector.ResourceTimelineDataGridNode.prototype._goToResource):
Simplify by deferring the graph logic to the new TimelineDataGridNode base class.

* UserInterface/SourceCodeTimelineTimelineDataGridNode.js: Added.
(WebInspector.SourceCodeTimelineTimelineDataGridNode):
(WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype.get records):
(WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype.get sourceCodeTimeline):
(WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype.get data):

* UserInterface/TimelineDataGridNode.js: Added.
(WebInspector.TimelineDataGridNode):
(WebInspector.TimelineDataGridNode.prototype.get records):
(WebInspector.TimelineDataGridNode.prototype.get data):
(WebInspector.TimelineDataGridNode.prototype.createCellContent):
(WebInspector.TimelineDataGridNode.prototype.refresh):
(WebInspector.TimelineDataGridNode.prototype.refreshGraph):
(WebInspector.TimelineDataGridNode.prototype.needsGraphRefresh):
Handles the graph column and manages the records and their bars.

* UserInterface/TimelineRecordBar.css: Added.
(.timeline-record-bar):
(.timeline-record-bar > .segment):
(.timeline-record-bar:not(.has-inactive-segment) > .segment):
(.timeline-record-bar.unfinished > .segment):
(.timeline-record-bar > .segment.inactive + .segment):
(:focus .selected .timeline-record-bar > .segment):
(.timeline-record-bar > .segment.inactive):
(.timeline-record-bar.timeline-record-type-network > .segment):
(.timeline-record-bar.timeline-record-type-layout > .segment):
(.timeline-record-bar.timeline-record-type-script > .segment):

* UserInterface/TimelineRecordBar.js: Added.
(WebInspector.TimelineRecordBar):
(WebInspector.TimelineRecordBar.prototype.get element):
(WebInspector.TimelineRecordBar.prototype.refresh):
(WebInspector.TimelineRecordBar.prototype._updateElementPosition):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162412 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Implement state cookie support for WebInspector.TimelineSidebarPanel.

https://bugs.webkit.org/show_bug.cgi?id=126921

Reviewed by Joseph Pecoraro.

* UserInterface/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
Drive-by fix to pass along relaxedMatchDelay to the superclass.

* UserInterface/Main.js:
(WebInspector.loaded):
(WebInspector._provisionalLoadStarted):
Listen for ProvisionalLoadStarted instead of ProvisionalLoadCommitted to save the cookie
before the TimelineRecording is reset and clears the UI.

* UserInterface/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype.get restoringState): Added.
(WebInspector.NavigationSidebarPanel.prototype.restoreStateFromCookie.finalAttemptToRestoreViewStateFromCookie):
Delete _pendingViewStateCookie since this was the final attempt.
(WebInspector.NavigationSidebarPanel.prototype.restoreStateFromCookie):
(WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject): Block string represented objects.
(WebInspector.NavigationSidebarPanel.prototype._checkElementsForPendingViewStateCookie):

* UserInterface/OverviewTimelineView.js:
(WebInspector.OverviewTimelineView.prototype._treeElementSelected):

* UserInterface/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel.prototype.treeElementForRepresentedObject):
Drive-by fix to null check parentFrame since it can be null. Was causing an exception while working on this.

* UserInterface/SourceCodeTimeline.js:
(WebInspector.SourceCodeTimeline):
(WebInspector.SourceCodeTimeline.prototype.saveIdentityToCookie):

* UserInterface/TimelineSidebarPanel.js:
(WebInspector.TimelineSidebarPanel.prototype.canShowDifferentContentView):
(WebInspector.TimelineSidebarPanel.prototype.saveStateToCookie):
(WebInspector.TimelineSidebarPanel.prototype.restoreStateFromCookie):

* UserInterface/TreeOutline.js:
(TreeOutline.prototype._forgetTreeElement):
Drive-by fix to clear selectedTreeElement if it is removed from the tree. Was causing removed TreeElements to be
saved as a cookie since it was still the selected item.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162413 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Filter the Timeline overview graph and sidebar based on the current time selection.

https://bugs.webkit.org/show_bug.cgi?id=126955

Reviewed by Joseph Pecoraro.

* UserInterface/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype.updateFilter):
(WebInspector.NavigationSidebarPanel.prototype.hasCustomFilters):
(WebInspector.NavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
(WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement.matchTextFilter):
(WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement):
Add support for custom filters implemented by subclasses.

* UserInterface/TimelineContentView.js:
(WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters.checkTimeBounds):
(WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters):
(WebInspector.TimelineContentView.prototype._timeRangeSelectionChanged):
Filter known tree element types by time.

* UserInterface/TimelineSidebarPanel.css:
(.sidebar > .panel.timeline > .empty-content-placeholder):
Position the empty placeholder with the content.

* UserInterface/TimelineSidebarPanel.js:
(WebInspector.TimelineSidebarPanel.prototype.hasCustomFilters):
(WebInspector.TimelineSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
Defer filtering to the TimelineContentView.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162414 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Implement the discrete Network timeline view.

https://bugs.webkit.org/show_bug.cgi?id=127022

Reviewed by Joseph Pecoraro.

* UserInterface/DataGrid.js:
(WebInspector.DataGrid): Align the labels of the column headers to match the data.
(WebInspector.DataGridNode.prototype.get selectable): Prevent selection when hidden.

* UserInterface/DetailsSection.css:
(.details-section > .header): Bump the font size to match data grid header sizes.

* UserInterface/Main.html: Add new files.

* UserInterface/NetworkTimelineView.css: Added.
(.timeline-view.network > .data-grid):
(.sidebar > .panel.timeline.timeline-content-view-showing > .content .item.resource .subtitle):
Hide the domain subtitle when the content view is showing which also has the domain.

* UserInterface/NetworkTimelineView.js: Added.
(WebInspector.NetworkTimelineView):
(WebInspector.NetworkTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
(WebInspector.NetworkTimelineView.prototype.shown):
(WebInspector.NetworkTimelineView.prototype.hidden):
(WebInspector.NetworkTimelineView.prototype.updateLayout):
(WebInspector.NetworkTimelineView.prototype.matchTreeElementAgainstCustomFilters):
(WebInspector.NetworkTimelineView.prototype._networkTimelineRecordAdded):
(WebInspector.NetworkTimelineView.prototype._dataGridFiltersDidChange):
(WebInspector.NetworkTimelineView.prototype._treeElementSelected):

* UserInterface/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype._needsRefresh):
Call dataGridNodeNeedsRefresh on the TimelineDataGrid so things can be batched with
one request animation frame.

* UserInterface/TimelineContentView.js:
(WebInspector.TimelineContentView): Create a NetworkTimelineView.
(WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters):

* UserInterface/TimelineDataGrid.css:
(.data-grid.timeline table):
(.data-grid.timeline th):
(.data-grid.timeline th:not(:last-child)):
(.data-grid.timeline th.sortable:active):
(.data-grid.timeline th.sort-descending):
(.data-grid.timeline .data-container):
(.data-grid.timeline td):
(.data-grid.timeline td:last-child):
(.data-grid.timeline td:not(:last-child)):
(.data-grid.timeline:focus tr.selected td:not(:last-child)):
(.data-grid.timeline th.sort-descending > div:first-child):
(.data-grid.timeline th.sort-descending > div:first-child::after):
(.data-grid.timeline td.error):
(.data-grid.timeline tr.selected td.error):
(.data-grid.timeline > .navigation-bar-container):
(.data-grid.timeline:hover > .navigation-bar-container):
(.data-grid.timeline > .navigation-bar-container > .navigation-bar):

* UserInterface/TimelineDataGrid.js:
(WebInspector.TimelineDataGrid):
(WebInspector.TimelineDataGrid.createColumnScopeBar):
(WebInspector.TimelineDataGrid.prototype.reset):
(WebInspector.TimelineDataGrid.prototype.shown):
(WebInspector.TimelineDataGrid.prototype.hidden):
(WebInspector.TimelineDataGrid.prototype.callFramePopoverAnchorElement):
(WebInspector.TimelineDataGrid.prototype.updateLayout):
(WebInspector.TimelineDataGrid.prototype.treeElementMatchesActiveScopeFilters):
(WebInspector.TimelineDataGrid.prototype.addRowInSortOrder):
(WebInspector.TimelineDataGrid.prototype.shouldIgnoreSelectionEvent):
(WebInspector.TimelineDataGrid.prototype.dataGridNodeNeedsRefresh):
(WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
(WebInspector.TimelineDataGrid.prototype._sort):
(WebInspector.TimelineDataGrid.prototype._sortComparator):
Add support for sorting, batch refresh and managing of a TreeOutlineDataGridSynchronizer.

* UserInterface/TimelineSidebarPanel.css:
(.sidebar > .panel.timeline > .title-bar): Bump the font size to match data grid header sizes.

* UserInterface/TimelineView.js:
(WebInspector.TimelineView.prototype.matchTreeElementAgainstCustomFilters): Added stub.

* UserInterface/TreeOutlineDataGridSynchronizer.js:
(WebInspector.TreeOutlineDataGridSynchronizer.prototype.get treeOutline):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype.get dataGrid):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype.get enabled):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype.set enabled):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype.treeElementForDataGridNode):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype.dataGridNodeForTreeElement):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeOutlineScrolled):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridScrolled):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeSelected):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeExpanded):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeCollapsed):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementSelected):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementAdded):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementRemoved):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementExpanded):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementCollapsed):
(WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementHiddenChanged):
Added support for disabling the synchronizer when the client can do a better job.

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