Blind Windows build fix.
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
1 2014-03-01  Timothy Hatcher  <timothy@apple.com>
2
3         Make Start Timeline Recording in the Develop menu show the Timeline view again.
4
5         This also fixes a noticeable delay between showing the sidebar and the default Timeline
6         view when initially opening the Web Inspector to the Timeline.
7
8         https://bugs.webkit.org/show_bug.cgi?id=129545
9
10         Reviewed by Joseph Pecoraro.
11
12         * UserInterface/Base/Main.js:
13         (WebInspector.contentLoaded): Call TimelineSidebarPanel.initialize to prime the content view.
14         This is needed so the view is ready in this run loop cycle, where it was delayed before.
15         * UserInterface/Protocol/InspectorFrontendAPI.js:
16         (InspectorFrontendAPI.setTimelineProfilingEnabled): Call TimelineSidebarPanel.showTimelineOverview.
17         * UserInterface/Views/TimelineSidebarPanel.js:
18         (WebInspector.TimelineSidebarPanel.prototype.initialize): Added.
19
20 2014-03-01  Timothy Hatcher  <timothy@apple.com>
21
22         Select the Resource navigation sidebar by default when there is no cookie.
23
24         https://bugs.webkit.org/show_bug.cgi?id=129544
25
26         Reviewed by Joseph Pecoraro.
27
28         * UserInterface/Base/Main.js:
29         (WebInspector._restoreInspectorViewStateFromCookie):
30
31 2014-03-01  Timothy Hatcher  <timothy@apple.com>
32
33         Label JavaScript forced layouts as such in the Timeline.
34
35         https://bugs.webkit.org/show_bug.cgi?id=129546
36
37         Reviewed by David Kilzer.
38
39         * Localizations/en.lproj/localizedStrings.js: Updated.
40         * UserInterface/Controllers/TimelineManager.js:
41         (WebInspector.TimelineManager.prototype.eventRecorded.processRecord):
42         (WebInspector.TimelineManager.prototype.eventRecorded):
43         * UserInterface/Models/LayoutTimelineRecord.js:
44         (WebInspector.LayoutTimelineRecord.EventType.displayName):
45         * UserInterface/Views/TimelineRecordTreeElement.js:
46         (WebInspector.TimelineRecordTreeElement):
47
48 2014-02-28  Timothy Hatcher  <timothy@apple.com>
49
50         Enable breakpoints when adding a new breakpoint or enabling an existing breakpoint.
51
52         This eliminates a multi-step process for the user that can be confusing.
53
54         https://bugs.webkit.org/show_bug.cgi?id=129426
55
56         Reviewed by Joseph Pecoraro.
57
58         * UserInterface/Controllers/DebuggerManager.js:
59         (WebInspector.DebuggerManager.prototype.set breakpointsEnabled):
60         (WebInspector.DebuggerManager.prototype._breakpointDisabledStateDidChange):
61         * UserInterface/Views/DebuggerSidebarPanel.js:
62         (WebInspector.DebuggerSidebarPanel):
63         (WebInspector.DebuggerSidebarPanel.prototype._breakpointsEnabledDidChange):
64         (WebInspector.DebuggerSidebarPanel.prototype._breakpointsToggleButtonClicked):
65
66 2014-02-27  Timothy Hatcher  <timothy@apple.com>
67
68         Use a RegExp when when using CodeMirror's SearchCursor.
69
70         This avoids doing toLowerCase() on every line of the TextEditor.
71
72         https://bugs.webkit.org/show_bug.cgi?id=129463
73
74         Reviewed by Joseph Pecoraro.
75
76         * UserInterface/Views/TextEditor.js:
77         (TextEditor.prototype.performSearch): Use a RegExp for query. Pass false for the caseFold
78         argument, but it is ignored for RegExp searches anyway.
79
80 2014-02-27  Brian Burg  <bburg@apple.com>
81
82         Web Inspector: model tests should use a special Test.html inspector page
83         https://bugs.webkit.org/show_bug.cgi?id=129190
84
85         Reviewed by Timothy Hatcher.
86
87         * UserInterface/Base/Test.js: Added.
88         (WebInspector.loaded):
89         (WebInspector.contentLoaded):
90         (WebInspector.updateDockedState):
91         (InspectorTest.log):
92         (InspectorTest.assert):
93         (InspectorTest.debugLog):
94         (InspectorTest.completeTest):
95         (InspectorTest.evaluateInPage):
96         (InspectorTest.addResult):
97         (InspectorTest.clearResults):
98         (InspectorTest.pageLoaded):
99         (InspectorTest.reportUncaughtException):
100         (.console.logType):
101         * UserInterface/Protocol/InspectorBackend.js:
102         (InspectorBackendClass):
103         (InspectorBackendClass.prototype.dispatch):
104         (InspectorBackendClass.prototype.runAfterPendingDispatches):
105         (InspectorBackendClass.prototype._flushPendingScripts):
106         * UserInterface/Protocol/InspectorObserver.js:
107         (WebInspector.InspectorObserver.prototype.evaluateForTestInFrontend):
108         * UserInterface/Test.html: Added.
109
110 2014-02-27  Joseph Pecoraro  <pecoraro@apple.com>
111
112         Web Inspector: JSContext inspection should report exceptions in the console
113         https://bugs.webkit.org/show_bug.cgi?id=128776
114
115         Reviewed by Timothy Hatcher.
116
117         * UserInterface/ConsoleMessageImpl.js:
118         (WebInspector.ConsoleMessageImpl.prototype._formatMessage):
119         (WebInspector.ConsoleMessageImpl.prototype._shouldHideURL):
120         (WebInspector.ConsoleMessageImpl.prototype._firstNonNativeCallFrame):
121         (WebInspector.ConsoleMessageImpl.prototype._populateStackTraceTreeElement):
122         Provide better handling for "[native code]" and legacy "undefined"
123         call frame URLs. Never linkify these. Also, when showing a link
124         for an exception, always use the first non-native call frame as
125         the link location.
126
127 2014-02-26  Timothy Hatcher  <timothy@apple.com>
128
129         Fix an issue where the Timeline filter scope bars were not applying.
130
131         Reviewed by Joseph Pecoraro.
132
133         * UserInterface/Views/TimelineDataGrid.js:
134         (TimelineDataGrid.prototype.treeElementMatchesActiveScopeFilters): Use .get() to access the ScopeBar.
135
136 2014-02-25  Andreas Kling  <akling@apple.com>
137
138         Prune dead code for Web Inspector memory instrumentation.
139         <https://webkit.org/b/129286>
140
141         Reviewed by Sam Weinig.
142
143         * UserInterface/Protocol/InspectorWebBackendCommands.js:
144
145 2014-02-24  Timothy Hatcher  <timothy@apple.com>
146
147         Switch from prefixed CSS gradient to unprefixed.
148
149         https://bugs.webkit.org/show_bug.cgi?id=129279
150
151         Reviewed by Andreas Kling.
152
153         * UserInterface/Views/BreakpointActionView.css:
154         (.breakpoint-action-append-button):
155         (.breakpoint-action-remove-button):
156         * UserInterface/Views/CSSStyleDeclarationTextEditor.css:
157         (.css-style-text-editor > .CodeMirror .CodeMirror-lines .color-swatch):
158         * UserInterface/Views/CompletionSuggestionsView.css:
159         (.completion-suggestions-container > .item:active):
160         * UserInterface/Views/DashboardView.css:
161         (.toolbar .dashboard):
162         * UserInterface/Views/DataGrid.css:
163         (.data-grid th):
164         (.data-grid table.data):
165         (.data-grid th.sortable:not(.mouse-over-collapser):active):
166         (.data-grid th.sort-ascending, .data-grid th.sort-descending):
167         (.data-grid th.sortable.sort-ascending:not(.mouse-over-collapser):active, .data-grid th.sortable.sort-descending:not(.mouse-over-collapser):active):
168         (body.window-inactive .data-grid th.sort-descending):
169         * UserInterface/Views/DetailsSection.css:
170         (.details-section > .header):
171         (.details-section .details-section > .header):
172         * UserInterface/Views/DividerNavigationItem.css:
173         (.navigation-bar .item.divider):
174         * UserInterface/Views/FindBanner.css:
175         (.find-banner > button:active:not(:disabled)):
176         * UserInterface/Views/Main.css:
177         (#split-content-browser > .navigation-bar):
178         * UserInterface/Views/NavigationSidebarPanel.css:
179         (.sidebar > .panel.navigation > .overflow-shadow):
180         (.navigation-sidebar-panel-content-tree-outline .item.selected):
181         (.navigation-sidebar-panel-content-tree-outline:focus .item.selected):
182         (body.window-inactive .navigation-sidebar-panel-content-tree-outline .item.selected):
183         * UserInterface/Views/ProbeSetDataGrid.css:
184         (.details-section.probe-set .data-grid > .data-container td.unknown-value):
185         (.details-section.probe-set .data-grid th):
186         * UserInterface/Views/RadioButtonNavigationItem.css:
187         (.navigation-bar .item.radio.button.text-only.selected):
188         * UserInterface/Views/TextEditor.css:
189         (.text-editor .bouncy-highlight):
190         * UserInterface/Views/TimelineContentView.css:
191         (.content-view.timeline > .view-container > .timeline-view > .data-grid table.data):
192         * UserInterface/Views/TimelineDataGrid.css:
193         (.timeline-data-grid-tree-outline .item:hover):
194         * UserInterface/Views/TimelineRuler.css:
195         (.timeline-ruler > .header > .divider):
196         * UserInterface/Views/TimelineSidebarPanel.css:
197         (.sidebar > .panel.timeline > .title-bar):
198         (.sidebar > .panel.timeline > .content > .stripe-background):
199         * UserInterface/Views/Toolbar.css:
200         (body:not(.mac-platform) .toolbar):
201         (body.docked.mac-platform.mavericks .toolbar):
202
203 2014-02-24  Timothy Hatcher  <timothy@apple.com>
204
205         Fix the missing navigation bar in the Debugger sidebar panel.
206
207         Sorting the CSS resources caused specificity issue.
208
209         https://bugs.webkit.org/show_bug.cgi?id=129251
210
211         Reviewed by Joseph Pecoraro.
212
213         * UserInterface/Views/DebuggerSidebarPanel.css:
214         (.sidebar > .panel.navigation.debugger > .content):
215         (.sidebar > .panel.navigation.debugger > .navigation-bar):
216         * UserInterface/Views/LayoutTimelineView.css:
217         (.sidebar > .panel.navigation.timeline.timeline-content-view-showing .navigation-sidebar-panel-content-tree-outline.layout .item .subtitle):
218         * UserInterface/Views/NetworkTimelineView.css:
219         (.sidebar > .panel.navigation.timeline.timeline-content-view-showing .navigation-sidebar-panel-content-tree-outline.network .item .subtitle):
220         * UserInterface/Views/ResourceSidebarPanel.css:
221         (.sidebar > .panel.navigation.resource > .empty-content-placeholder):
222         (.sidebar > .panel.navigation.resource > .search-bar):
223         (.sidebar > .panel.navigation.resource > .search-bar > input[type="search"]):
224         * UserInterface/Views/ScriptTimelineView.css:
225         (.sidebar > .panel.navigation.timeline.timeline-content-view-showing .navigation-sidebar-panel-content-tree-outline.script .item .subtitle):
226         * UserInterface/Views/TimelineSidebarPanel.css:
227         (.sidebar > .panel.navigation.timeline > .status-bar):
228         (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph):
229         (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.recording):
230         (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph:hover):
231         (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.recording:hover):
232         (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.forced):
233         (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.recording.forced):
234         (.sidebar > .panel.navigation.timeline > .status-bar > .record-status):
235         (.sidebar > .panel.navigation.timeline > .title-bar):
236         (.sidebar > .panel.navigation.timeline > .title-bar.timelines):
237         (.sidebar > .panel.navigation.timeline > .title-bar.timeline-events):
238         (.sidebar > .panel.navigation.timeline > .timelines-content):
239         (.sidebar > .panel.navigation.timeline > .timelines-content .close-button):
240         (.sidebar > .panel.navigation.timeline > .timelines-content li.item .icon):
241         (.sidebar > .panel.navigation.timeline > .timelines-content li.item.selected .close-button):
242         (.sidebar > .panel.navigation.timeline > .timelines-content li.item:not(.selected):nth-child(even)):
243         (.sidebar > .panel.navigation.timeline > .timelines-content li.item:not(.selected):not(:first-child)):
244         (.sidebar > .panel.navigation.timeline > .timelines-content li.item.selected + li.item):
245         (.sidebar > .panel.navigation.timeline > .timelines-content :focus li.item.selected + li.item):
246         (.sidebar > .panel.navigation.timeline > .timelines-content .close-button:active):
247         (.sidebar > .panel.navigation.timeline > .empty-content-placeholder):
248         (.sidebar > .panel.navigation.timeline.timeline-content-view-showing > .content):
249         (.sidebar > .panel.navigation.timeline > .content > .stripe-background):
250         (.sidebar > .panel.navigation.timeline.timeline-content-view-showing > .content > .stripe-background):
251
252 2014-02-24  Timothy Hatcher  <timothy@apple.com>
253
254         Give non-Mac platforms a default toolbar background so it isn't just white.
255
256         https://bugs.webkit.org/show_bug.cgi?id=129260
257
258         Reviewed by Joseph Pecoraro.
259
260         * UserInterface/Base/Main.js:
261         (WebInspector.contentLoaded): Style the boby with platform classes.
262         * UserInterface/Base/Utilities.js:
263         (String.prototype.contains): Added.
264         * UserInterface/Views/Toolbar.css:
265         (body.docked .toolbar, body:not(.mac-platform) .toolbar): Added. Default toolbar background.
266         (body.docked.mac-platform.mavericks .toolbar, body.docked.mac-platform.mountain-lion): Added.
267         (body.mac-platform:not(.docked) .toolbar .item.button > .label): Only apply to Mac.
268
269 2014-02-24  Diego Pino Garcia  <dpino@igalia.com>
270
271         Web Inspector: Remove single quote characters from Web Inspector JavaScript files
272         https://bugs.webkit.org/show_bug.cgi?id=129253
273
274         Reviewed by Timothy Hatcher.
275
276         * UserInterface/Base/Main.js:
277         (WebInspector.openURL):
278         * UserInterface/Views/CookieStorageContentView.js:
279         (WebInspector.cookieDomainMatchesResourceDomain):
280         * UserInterface/Views/DOMTreeElement.js:
281         (WebInspector.DOMTreeElement.prototype._insertInLastAttributePosition):
282         (WebInspector.DOMTreeElement.prototype._startEditingTagName.editingComitted):
283         (WebInspector.DOMTreeElement.prototype._startEditingTagName.editingCancelled):
284         (WebInspector.DOMTreeElement.prototype._startEditingTagName):
285         * UserInterface/Views/DOMTreeOutline.js:
286         (WebInspector.DOMTreeOutline.prototype._ondragover):
287         * UserInterface/Views/DataGrid.js:
288         (WebInspector.DataGrid.prototype.addPlaceholderNode):
289
290 2014-02-23  Dan Bernstein  <mitz@apple.com>
291
292         Removed -Wno-format-y2k from WARNING_CFLAGS
293
294         Rubber-stamped by Sam Weinig.
295
296         * Configurations/Base.xcconfig:
297
298 2014-02-23  Diego Pino García  <dpino@igalia.com>
299
300         [GTK] Fix build after Web Inspector code reorganization (r164543)
301         https://bugs.webkit.org/show_bug.cgi?id=129231
302
303         Reviewed by Dean Jackson.
304
305         * GNUmakefile.am:
306         Modify paths to Web Inspector code.
307
308 2014-02-23  Antoine Quint  <graouts@webkit.org>
309
310         Web Inspector: color picker sliders aren't laid out correctly
311         https://bugs.webkit.org/show_bug.cgi?id=129234
312
313         Reviewed by Joseph Pecoraro.
314
315         While it's unclear to me what happened, the "position" property for the color picker sliders
316         wasn't being computed as expected and used relative positioning. I assume this is related to
317         r164543 when the order of CSS files changed.
318
319         * UserInterface/Views/Slider.css:
320         (.slider):
321
322 2014-02-22  Dan Bernstein  <mitz@apple.com>
323
324         REGRESSION (r164507): Crash beneath JSGlobalObjectInspectorController::reportAPIException at facebook.com, twitter.com, youtube.com
325         https://bugs.webkit.org/show_bug.cgi?id=129227
326
327         Reviewed by Eric Carlson.
328
329         Reverted r164507.
330
331         * UserInterface/Views/ConsoleMessageImpl.js:
332         (WebInspector.ConsoleMessageImpl.prototype._formatMessage):
333         (WebInspector.ConsoleMessageImpl.prototype._populateStackTraceTreeElement):
334
335 2014-02-21  Timothy Hatcher  <timothy@apple.com>
336
337         Organize WebInspectorUI/UserInterface into sub-directories.
338
339         https://bugs.webkit.org/show_bug.cgi?id=129194
340
341         Rubber-stamped by Joseph Pecoraro.
342
343         * Scripts/copy-user-interface-resources.sh: Fix Image URLs and Protocol paths.
344         * UserInterface/Base: Added.
345         * UserInterface/Controllers: Added.
346         * UserInterface/Images: Added.
347         * UserInterface/Main.html: Updated.
348         * UserInterface/Models Added.
349         * UserInterface/Protocol Added.
350         * UserInterface/Views: Added.
351
352 2014-02-21  Timothy Hatcher  <timothy@apple.com>
353
354         Add inspection user interface for IndexedDB.
355
356         https://bugs.webkit.org/show_bug.cgi?id=129162
357
358         Reviewed by Joseph Pecoraro.
359
360         * Localizations/en.lproj/localizedStrings.js: Updated.
361         * UserInterface/ContentView.js:
362         (WebInspector.ContentView):
363         (WebInspector.ContentView.isViewable):
364         * UserInterface/IndexedDatabase.js: Added.
365         (WebInspector.IndexedDatabase):
366         (WebInspector.IndexedDatabase.prototype.get name):
367         (WebInspector.IndexedDatabase.prototype.get securityOrigin):
368         (WebInspector.IndexedDatabase.prototype.get host):
369         (WebInspector.IndexedDatabase.prototype.get version):
370         (WebInspector.IndexedDatabase.prototype.get objectStores):
371         (WebInspector.IndexedDatabase.prototype.saveIdentityToCookie):
372         * UserInterface/IndexedDatabaseEntryDataGridNode.js: Added.
373         (WebInspector.IndexedDatabaseEntryDataGridNode):
374         (WebInspector.IndexedDatabaseEntryDataGridNode.prototype.get entry):
375         (WebInspector.IndexedDatabaseEntryDataGridNode.prototype.createCellContent):
376         * UserInterface/IndexedDatabaseHostTreeElement.js: Added.
377         (WebInspector.IndexedDatabaseHostTreeElement):
378         (WebInspector.IndexedDatabaseHostTreeElement.prototype.get name):
379         (WebInspector.IndexedDatabaseHostTreeElement.prototype.get categoryName):
380         * UserInterface/IndexedDatabaseObjectStore.js: Added.
381         (WebInspector.IndexedDatabaseObjectStore):
382         (WebInspector.IndexedDatabaseObjectStore.prototype.get name):
383         (WebInspector.IndexedDatabaseObjectStore.prototype.get keyPath):
384         (WebInspector.IndexedDatabaseObjectStore.prototype.get autoIncrement):
385         (WebInspector.IndexedDatabaseObjectStore.prototype.get parentDatabase):
386         (WebInspector.IndexedDatabaseObjectStore.prototype.get indexes):
387         (WebInspector.IndexedDatabaseObjectStore.prototype.saveIdentityToCookie):
388         (WebInspector.IndexedDatabaseObjectStore.prototype.establishRelationship):
389         * UserInterface/IndexedDatabaseObjectStoreContentView.css: Added.
390         (.content-view.indexed-database-object-store > .data-grid):
391         (.content-view.indexed-database-object-store > .data-grid td .section .header):
392         (.content-view.indexed-database-object-store > .data-grid td .section .header::before):
393         (.content-view.indexed-database-object-store > .data-grid td .section .header .title):
394         (.content-view.indexed-database-object-store > .data-grid table.data):
395         (.content-view.indexed-database-object-store > .data-grid table.data tr:nth-child(even)):
396         (.content-view.indexed-database-object-store > .data-grid table.data tr:nth-child(odd)):
397         (.content-view.indexed-database-object-store > .data-grid table.data tr.filler):
398         (.content-view.indexed-database-object-store > .data-grid :focus tr.selected td .section .header::before):
399         (.content-view.indexed-database-object-store > .data-grid :focus tr.selected td .section.expanded .header::before):
400         (.content-view.indexed-database-object-store > .data-grid :focus tr.selected td .properties-tree li.parent::before):
401         (.content-view.indexed-database-object-store > .data-grid :focus tr.selected td .properties-tree li.parent.expanded::before):
402         (.content-view.indexed-database-object-store > .data-grid :focus tr.selected td .properties-tree li *):
403         * UserInterface/IndexedDatabaseObjectStoreContentView.js: Added.
404         (WebInspector.IndexedDatabaseObjectStoreContentView.displayKeyPath):
405         (WebInspector.IndexedDatabaseObjectStoreContentView):
406         (WebInspector.IndexedDatabaseObjectStoreContentView.prototype.closed):
407         (WebInspector.IndexedDatabaseObjectStoreContentView.prototype.saveToCookie):
408         (WebInspector.IndexedDatabaseObjectStoreContentView.prototype.updateLayout):
409         (WebInspector.IndexedDatabaseObjectStoreContentView.prototype._reset):
410         (WebInspector.IndexedDatabaseObjectStoreContentView.prototype._dataGridScrolled):
411         (WebInspector.IndexedDatabaseObjectStoreContentView.prototype._fetchMoreData.processEntries):
412         (WebInspector.IndexedDatabaseObjectStoreContentView.prototype._fetchMoreData):
413         * UserInterface/IndexedDatabaseObjectStoreIndex.js: Added.
414         (WebInspector.IndexedDatabaseObjectStoreIndex):
415         (WebInspector.IndexedDatabaseObjectStoreIndex.prototype.get name):
416         (WebInspector.IndexedDatabaseObjectStoreIndex.prototype.get keyPath):
417         (WebInspector.IndexedDatabaseObjectStoreIndex.prototype.get unique):
418         (WebInspector.IndexedDatabaseObjectStoreIndex.prototype.get multiEntry):
419         (WebInspector.IndexedDatabaseObjectStoreIndex.prototype.get parentObjectStore):
420         (WebInspector.IndexedDatabaseObjectStoreIndex.prototype.saveIdentityToCookie):
421         (WebInspector.IndexedDatabaseObjectStoreIndex.prototype.establishRelationship):
422         * UserInterface/IndexedDatabaseObjectStoreIndexTreeElement.js: Added.
423         (WebInspector.IndexedDatabaseObjectStoreIndexTreeElement):
424         (WebInspector.IndexedDatabaseObjectStoreIndexTreeElement.prototype.get objectStoreIndex):
425         * UserInterface/IndexedDatabaseObjectStoreTreeElement.js: Added.
426         (WebInspector.IndexedDatabaseObjectStoreTreeElement):
427         (WebInspector.IndexedDatabaseObjectStoreTreeElement.prototype.get objectStore):
428         (WebInspector.IndexedDatabaseObjectStoreTreeElement.prototype.oncollapse):
429         (WebInspector.IndexedDatabaseObjectStoreTreeElement.prototype.onpopulate):
430         * UserInterface/IndexedDatabaseTreeElement.js: Added.
431         (WebInspector.IndexedDatabaseTreeElement):
432         (WebInspector.IndexedDatabaseTreeElement.prototype.get indexedDatabase):
433         (WebInspector.IndexedDatabaseTreeElement.prototype.oncollapse):
434         (WebInspector.IndexedDatabaseTreeElement.prototype.onpopulate):
435         * UserInterface/Main.html:
436         * UserInterface/Main.js:
437         (WebInspector.sidebarPanelForRepresentedObject):
438         * UserInterface/ResourceSidebarPanel.js:
439         (WebInspector.ResourceSidebarPanel):
440         (WebInspector.ResourceSidebarPanel.prototype._treeElementSelected):
441         (WebInspector.ResourceSidebarPanel.prototype._indexedDatabaseWasAdded):
442         (WebInspector.ResourceSidebarPanel.prototype._storageCleared):
443         * UserInterface/StorageManager.js:
444         (WebInspector.StorageManager):
445         (WebInspector.StorageManager.prototype.initialize):
446         (WebInspector.StorageManager.prototype.processData):
447         (WebInspector.StorageManager.prototype.requestIndexedDatabaseData):
448         (WebInspector.StorageManager.prototype._mainResourceDidChange):
449         (WebInspector.StorageManager.prototype._addIndexedDBDatabasesIfNeeded.processDatabaseNames):
450         (WebInspector.StorageManager.prototype._addIndexedDBDatabasesIfNeeded.processDatabase):
451         (WebInspector.StorageManager.prototype._addIndexedDBDatabasesIfNeeded):
452         (WebInspector.StorageManager.prototype._addIndexedDBDatabasesIfNeeded.processObjectStore):
453         (WebInspector.StorageManager.prototype._addIndexedDBDatabasesIfNeeded.processObjectStoreIndex):
454         (WebInspector.StorageManager.prototype._securityOriginDidChange):
455         * UserInterface/URLUtilities.js:
456         (parseSecurityOrigin):
457
458 2014-02-22  Antoine Quint  <graouts@webkit.org>
459
460         Web Inspector: allow drag-to-adjust on angle input of gradients editor
461         https://bugs.webkit.org/show_bug.cgi?id=129095
462
463         Reviewed by Timothy Hatcher.
464
465         Rename CodeMirrorDragToAlterNumberController to CodeMirrorDragToAdjustNumberController and move
466         the core logic of a drag-to-adjust behavior out of it to a new generic class DragToAdjustController.
467         We use this new class from CodeMirrorGradientEditingController to provide drag-to-adjust behavior
468         in the angle input field of the gradient editor and also as a supporting object for the CodeMirror-
469         specific class.
470
471         * UserInterface/CodeMirrorDragToAdjustNumberController.css: Renamed from Source/WebInspectorUI/UserInterface/CodeMirrorDragToAlterNumberController.css.
472         (.CodeMirror.drag-to-adjust .CodeMirror-lines):
473
474         * UserInterface/CodeMirrorDragToAdjustNumberController.js: Added.
475         Removed the UI logic and use the new DragToAdjustController as a supporting object instead. We implement
476         the various DragToAdjustController delegate methods in order to customize its behavior to work within the
477         context of a CodeMirror editor, specifically to prevent activation when the editor is read-only and to
478         prevent adjustment when the hovered token isn't a number.
479
480         (WebInspector.CodeMirrorDragToAdjustNumberController):
481         (WebInspector.CodeMirrorDragToAdjustNumberController.prototype.get enabled):
482         (WebInspector.CodeMirrorDragToAdjustNumberController.prototype.set enabled):
483         (WebInspector.CodeMirrorDragToAdjustNumberController.prototype.dragToAdjustControllerActiveStateChanged):
484         (WebInspector.CodeMirrorDragToAdjustNumberController.prototype.dragToAdjustControllerCanBeActivated):
485         (WebInspector.CodeMirrorDragToAdjustNumberController.prototype.dragToAdjustControllerCanBeAdjusted):
486         (WebInspector.CodeMirrorDragToAdjustNumberController.prototype.dragToAdjustControllerWasAdjustedByAmount):
487         (WebInspector.CodeMirrorDragToAdjustNumberController.prototype.dragToAdjustControllerDidReset):
488         (WebInspector.CodeMirrorDragToAdjustNumberController.prototype.dragToAdjustControllerCanAdjustObjectAtPoint):
489
490         * UserInterface/CodeMirrorGradientEditingController.css:
491         (.gradient-editing-controller > label.drag-to-adjust > input):
492
493         * UserInterface/CodeMirrorGradientEditingController.js:
494         Adopt the new DragToAdjustController to make the angle input field value adjustable by dragging.
495
496         (WebInspector.CodeMirrorGradientEditingController.prototype.popoverWillPresent):
497         (WebInspector.CodeMirrorGradientEditingController.prototype.dragToAdjustControllerWasAdjustedByAmount):
498         (WebInspector.CodeMirrorGradientEditingController.prototype._handleInputEvent):
499         (WebInspector.CodeMirrorGradientEditingController.prototype._angleInputValueDidChange):
500
501         * UserInterface/DragToAdjustController.js: Renamed from Source/WebInspectorUI/UserInterface/CodeMirrorDragToAlterNumberController.js.
502         New DragToAdjustController class exposing only the core UI logic of a drag-to-adjust behavior in the context
503         of a DOM element, exposing a few delegation methods to customize the controller's behavior:
504
505         - dragToAdjustControllerActiveStateChanged() notifies that the .active property has changed, allowing bringup
506         and cleanup work to be performed.
507
508         - dragToAdjustControllerDidReset() notifies that the various tracking states of the controller have been reset
509         allowing other state objects used by clients to be cleared.
510
511         - dragToAdjustControllerCanBeActivated() is used to check whether the controller may enter the active state upon
512         first hovering the target element.
513
514         - dragToAdjustControllerCanBeAdjusted() is used to check whether adjustment can be performed at the moment when
515         the user actually is about to engage in a drag-to-adjust interaction.
516
517         - dragToAdjustControllerCanAdjustObjectAtPoint() is used to check whether the object at the provided point (mouse
518         location) is an adjustable value.
519
520         - dragToAdjustControllerWasAdjustedByAmount() notifies that there is a new amount to add to the current value
521         following a drag-to-adjust interaction.
522
523         (WebInspector.DragToAdjustController):
524         (WebInspector.DragToAdjustController.prototype.get element):
525         (WebInspector.DragToAdjustController.prototype.set element):
526         (WebInspector.DragToAdjustController.prototype.set enabled):
527         (WebInspector.DragToAdjustController.prototype.get active):
528         (WebInspector.DragToAdjustController.prototype.set active):
529         (WebInspector.DragToAdjustController.prototype.reset):
530         (WebInspector.DragToAdjustController.prototype.handleEvent):
531         (WebInspector.DragToAdjustController.prototype._setDragging):
532         (WebInspector.DragToAdjustController.prototype._setTracksMouseClickAndDrag):
533         (WebInspector.DragToAdjustController.prototype._modifiersDidChange):
534         (WebInspector.DragToAdjustController.prototype._mouseMoved):
535         (WebInspector.DragToAdjustController.prototype._mouseWasPressed):
536         (WebInspector.DragToAdjustController.prototype._mouseWasDragged):
537         (WebInspector.DragToAdjustController.prototype._mouseWasReleased):
538
539         * UserInterface/Main.html:
540         Link in new source files.
541
542 2014-02-21  Chi Wai Lau  <clau@apple.com>
543
544         Web Inspector: Replace binarySearch with lowerBound and upperBound functions
545         https://bugs.webkit.org/show_bug.cgi?id=118609
546
547         Reviewed by Timothy Hatcher.
548
549         This makes insertionIndexForObjectInListSortedByFunction work in O(log(n)) time instead of O(n).
550
551         * UserInterface/BinarySearch.js: Removed.
552         * UserInterface/Main.html:
553         * UserInterface/Utilities.js:
554         * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
555         * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
556
557 2014-02-21  Brian Burg  <bburg@apple.com>
558
559         Web Inspector: animate breakpoint tree elements when probe samples are received
560         https://bugs.webkit.org/show_bug.cgi?id=128334
561
562         Reviewed by Timothy Hatcher.
563
564         * UserInterface/BreakpointIcons.css: Removed, rules migrated to the following file.
565
566         * UserInterface/BreakpointTreeElement.css: When we want to animateon top of the
567         static icon, we set the icon image as the icon element's background, and animate
568         a span on top of the icon element.
569
570         (.breakpoint-exception-icon .icon): Moved.
571         (.breakpoint-generic-line-icon .icon):
572         (.breakpoint-generic-line-icon .icon > span): Added.
573         (.data-updated.breakpoint-generic-line-icon .icon > span): Added.
574
575         * UserInterface/BreakpointTreeElement.js:
576         (WebInspector.BreakpointTreeElement): Rewrite event listener add/remove to use EventListenerSet.
577         (WebInspector.BreakpointTreeElement.prototype.ondetach): Override to unregister the instance's listeners.
578         (WebInspector.BreakpointTreeElement.prototype._addProbeSet): Added.
579         (WebInspector.BreakpointTreeElement.prototype._removeProbeSet): Added.
580         (WebInspector.BreakpointTreeElement.prototype._probeSetAdded): Added.
581         (WebInspector.BreakpointTreeElement.prototype._probeSetRemoved): Added.
582         Add/remove listeners when probe sets change.
583
584         (WebInspector.BreakpointTreeElement.prototype._samplesCleared): Listeners should follow
585         the active data table.
586
587         (WebInspector.BreakpointTreeElement.prototype._dataUpdated): Run the animation when probe data changes.
588         (WebInspector.BreakpointTreeElement.prototype._breakpointLocationDidChange): Fix a listener leak.
589         * UserInterface/Main.html: Remove BreakpointIcons.css.
590         * UserInterface/NavigationSidebarPanel.css:
591         (.navigation-sidebar-panel-content-tree-outline .item .icon): give icons
592         'position: relative' so child spans can be absolutely positioned.
593         * UserInterface/ProbeDetailsSidebarPanel.js: Get probeSet out of the event data
594         container. The probe set used to be passed as the data container itself.
595         (WebInspector.ProbeDetailsSidebarPanel.prototype._probeSetAdded):
596         * UserInterface/ProbeManager.js:
597         (WebInspector.ProbeManager.prototype._breakpointActionsChanged.set get knownProbeIdentifiers):
598         (WebInspector.ProbeManager.prototype._breakpointActionsChanged):
599         (WebInspector.ProbeManager.prototype.get _probeSetForBreakpoint.set this):
600         * UserInterface/ProbeSet.js:
601         (WebInspector.ProbeSet.prototype.clearSamples): include the old data table as the SamplesCleared event data.
602         * UserInterface/TextResourceContentView.js:
603         (WebInspector.TextResourceContentView.prototype._probeSetsChanged):
604
605 2014-02-21  Joseph Pecoraro  <pecoraro@apple.com>
606
607         Web Inspector: JSContext inspection should report exceptions in the console
608         https://bugs.webkit.org/show_bug.cgi?id=128776
609
610         Reviewed by Timothy Hatcher.
611
612         * UserInterface/ConsoleMessageImpl.js:
613         (WebInspector.ConsoleMessageImpl.prototype._formatMessage):
614         (WebInspector.ConsoleMessageImpl.prototype._shouldHideURL):
615         (WebInspector.ConsoleMessageImpl.prototype._firstNonNativeCallFrame):
616         (WebInspector.ConsoleMessageImpl.prototype._populateStackTraceTreeElement):
617         Provide better handling for "[native code]" and legacy "undefined"
618         call frame URLs. Never linkify these. Also, when showing a link
619         for an exception, always use the first non-native call frame as
620         the link location.
621
622 2014-02-21  Joseph Pecoraro  <pecoraro@apple.com>
623
624         Revert r164486, causing a number of test failures.
625
626         Unreviewed rollout.
627
628 2014-02-21  Joseph Pecoraro  <pecoraro@apple.com>
629
630         Web Inspector: JSContext inspection should report exceptions in the console
631         https://bugs.webkit.org/show_bug.cgi?id=128776
632
633         Reviewed by Timothy Hatcher.
634
635         * UserInterface/ConsoleMessageImpl.js:
636         (WebInspector.ConsoleMessageImpl.prototype._formatMessage):
637         (WebInspector.ConsoleMessageImpl.prototype._shouldHideURL):
638         (WebInspector.ConsoleMessageImpl.prototype._firstNonNativeCallFrame):
639         (WebInspector.ConsoleMessageImpl.prototype._populateStackTraceTreeElement):
640         Provide better handling for "[native code]" and legacy "undefined"
641         call frame URLs. Never linkify these. Also, when showing a link
642         for an exception, always use the first non-native call frame as
643         the link location.
644
645 2014-02-21  Antoine Quint  <graouts@webkit.org>
646
647         Web Inspector: scrollbar may appear when selecting a stop in gradient editor
648         https://bugs.webkit.org/show_bug.cgi?id=129149
649
650         Reviewed by Timothy Hatcher.
651
652         Ensure the angle input is not focused as we update the size of the gradient editor's
653         popover content since, if it were, it'd make a scrollbar appear as we animate the
654         popover's frame to fit its new content.
655
656         * UserInterface/CodeMirrorGradientEditingController.js:
657         (WebInspector.CodeMirrorGradientEditingController.prototype.gradientSliderStopWasSelected):
658
659 2014-02-20  Antoine Quint  <graouts@webkit.org>
660
661         Web Inspector: rich editing of CSS gradients
662         https://bugs.webkit.org/show_bug.cgi?id=119686
663
664         Reviewed by Timothy Hatcher.
665
666         Look for gradient definitions in CSS resources and implement a gradient-specific CodeMirrorEditingController
667         to edit those CSS gradients. The CodeMirrorGradientEditingController consists of a GradientSlider, a new widget
668         allowing the editing of gradient stops, a <select> to pick between various gradient types, a text input to edit
669         the gradient angle (for linear gradients) and finally a ColorPicker when a gradient stop is picked for editing.
670
671         * Localizations/en.lproj/localizedStrings.js:
672         New localized strings for the content of the gradient editing controller popover.
673
674         * UserInterface/CodeMirrorAdditions.js:
675         New .createGradientMarkers() method which, similar to .createColorMarkers(), takes in an optional TextRange, and
676         looks for all gradients specified in CSS to create TextMarkers with new type WebInspector.TextMarker.Type.Gradient.
677         In order to fully identify these CSS gradient strings, we implement a tokenizer to look for the final closing
678         parenthesis since there can be nested opening and closing parentheses as colors are specified for stops.
679
680         * UserInterface/CodeMirrorGradientEditingController.css: Added.
681         (.gradient-editing-controller):
682         (.gradient-editing-controller.edits-color):
683         (.gradient-editing-controller.radial-gradient):
684         (.gradient-editing-controller.edits-color.radial-gradient):
685         (.gradient-editing-controller select):
686         (.gradient-editing-controller .gradient-slider):
687         (.gradient-editing-controller .color-picker):
688         (.gradient-editing-controller > .color-picker > .slider):
689         (.gradient-editing-controller > .color-picker > .brightness):
690         (.gradient-editing-controller > .color-picker > .opacity):
691         (.gradient-editing-controller > label):
692         (.gradient-editing-controller.radial-gradient > label):
693         (.gradient-editing-controller.edits-color > label):
694         (.gradient-editing-controller > label > input):
695
696         * UserInterface/CodeMirrorGradientEditingController.js: Added.
697         (WebInspector.CodeMirrorGradientEditingController):
698         (WebInspector.CodeMirrorGradientEditingController.prototype.get initialValue):
699         (WebInspector.CodeMirrorGradientEditingController.prototype.get cssClassName):
700         (WebInspector.CodeMirrorGradientEditingController.prototype.get popoverPreferredEdges):
701         (WebInspector.CodeMirrorGradientEditingController.prototype.popoverTargetFrameWithRects):
702         (WebInspector.CodeMirrorGradientEditingController.prototype.popoverWillPresent):
703         (WebInspector.CodeMirrorGradientEditingController.prototype.popoverDidPresent):
704         Implementation of CodeMirrorEditingController methods meant to be overridden. This allows us
705         to customize the popover's appearance, mostly to control how it attaches to the gradient
706         strings in the editor.
707
708         (WebInspector.CodeMirrorGradientEditingController.prototype.handleEvent):
709         Event handler for changes in the <select> governing gradient type and <input> for the angle.
710
711         (WebInspector.CodeMirrorGradientEditingController.prototype.gradientSliderStopsDidChange):
712         Implementation of a GradientSlider delegation method, we use this to update the .text property
713         in order to propagate the stops change to the editor.
714
715         (WebInspector.CodeMirrorGradientEditingController.prototype.gradientSliderStopWasSelected):
716         Implementation of a GradientSlider delegation method, we use this to control the display of the
717         ColorPicker used to edit the color of a selected stop.
718
719         (WebInspector.CodeMirrorGradientEditingController.prototype._handleInputEvent):
720         Deal with changes in the <input> for the angle, ensuring we have a "º" string added to the value.
721
722         (WebInspector.CodeMirrorGradientEditingController.prototype._handleChangeEvent):
723         Deal with changes in the <select> for the type, preserving the stops list from one gradient type
724         to the other. Gradient type-specific information (angle for linear gradients, sizing for radial
725         gradients) is lost as we toggle between gradient types.
726
727         (WebInspector.CodeMirrorGradientEditingController.prototype._colorPickerColorChanged):
728         Propagate a color change in the ColorPicker to the stop being edited in the GradientSlider and
729         and update the .text property in order to propagate the stops change to the editor.
730
731         (WebInspector.CodeMirrorGradientEditingController.prototype._updateCSSClassForGradientType):
732         As we toggle the gradient type in ._handleChangeEvent(), update the CSS class used to hide or show
733         the angle <input> which is only relevant for linear gradients.
734
735         * UserInterface/ColorPicker.js:
736         (WebInspector.ColorPicker):
737         Adopt the new Checkers.svg file to display the checkers pattern in the background of the opacity slider.
738
739         (WebInspector.ColorPicker.prototype.get colorWheel):
740         Expose the ColorWheel such that it can be sized by ColorPicker clients.
741
742         (WebInspector.ColorPicker.prototype._updateColor):
743         Drive-by fix for a bug where we'd attempt to use the RGB components of a color to get the alpha-aware version
744         of the color even though the base format was HSL.
745
746         * UserInterface/Gradient.js: Added.
747         Parser for gradient strings as passed from the CodeMirror .createGradientMarkers() extension method. In the case
748         of linear gradients, we parse all values, save for lengths, and in the case of radial gradients, we preserve the
749         sizing information as a string and parse only the gradient stops as the sizing information is only useful to show
750         in an editor if attached to an element with metrics.
751         
752         Since instances of Gradient are used as the .value property of CodeMirrorGradientEditingController, we implement
753         the required .copy() and .toString() methods. The .toString() implementations are aware of default values for angles
754         and color stop offsets and only print those as necessary and use shorthands when possible.
755
756         (WebInspector.Gradient.fromString):
757         (WebInspector.Gradient.stopsWithComponents):
758         (WebInspector.Gradient.stringFromStops):
759         (WebInspector.LinearGradient):
760         (WebInspector.LinearGradient.linearGradientWithComponents):
761         (WebInspector.LinearGradient.prototype.copy):
762         (WebInspector.LinearGradient.prototype.toString):
763         (WebInspector.RadialGradient):
764         (WebInspector.RadialGradient.radialGradientWithComponents):
765         (WebInspector.RadialGradient.prototype.copy):
766         (WebInspector.RadialGradient.prototype.toString):
767
768         * UserInterface/GradientSlider.css: Added.
769         (.gradient-slider):
770         (.gradient-slider > canvas):
771         (.gradient-slider > .add-area):
772         (.gradient-slider-knob):
773         (.gradient-slider-knob.shadow):
774         (.gradient-slider-knob.selected):
775         (.gradient-slider-knob.detaching):
776         (.gradient-slider-knob.fade-out):
777         (.gradient-slider-knob > div):
778         (.gradient-slider-knob > img):
779
780         * UserInterface/GradientSlider.js: Added.
781         Widget used to edit a list of stops for a gradient, linear or radial. The widget features a <canvas> element
782         that draws the gradient as a linear gradient from left to right with checkers in the background to correctly
783         display transparent colors. Attached to this background, individual knobs are shown for each stop in the provided
784         stops array. These knobs can be dragged from left to right to change the matching stop offset, but also down to
785         detach the knob and remove this stop. Additionally, knobs can be clicked to toggle their selected state, where only
786         one knob can be selected at a time. The Esc. key is used to remove selection of the currently selected knob.
787
788         (WebInspector.GradientSlider):
789         (WebInspector.GradientSlider.prototype.get element):
790         (WebInspector.GradientSlider.prototype.get stops):
791         (WebInspector.GradientSlider.prototype.set stops):
792         (WebInspector.GradientSlider.prototype.get selectedStop):
793         (WebInspector.GradientSlider.prototype.handleEvent):
794         (WebInspector.GradientSlider.prototype.handleKeydownEvent):
795         (WebInspector.GradientSlider.prototype.knobXDidChange):
796         (WebInspector.GradientSlider.prototype.knobCanDetach):
797         (WebInspector.GradientSlider.prototype.knobWillDetach):
798         (WebInspector.GradientSlider.prototype.knobSelectionChanged):
799         (WebInspector.GradientSlider.prototype._handleMouseover):
800         (WebInspector.GradientSlider.prototype._handleMousemove):
801         (WebInspector.GradientSlider.prototype._handleMouseout):
802         (WebInspector.GradientSlider.prototype._handleClick):
803         (WebInspector.GradientSlider.prototype._updateShadowKnob):
804         (WebInspector.GradientSlider.prototype._sortStops):
805         (WebInspector.GradientSlider.prototype._updateStops):
806         (WebInspector.GradientSlider.prototype._updateCanvas):
807         (WebInspector.GradientSlider.prototype._updateKnobs):
808         (WebInspector.GradientSliderKnob):
809         (WebInspector.GradientSliderKnob.prototype.get element):
810         (WebInspector.GradientSliderKnob.prototype.get stop):
811         (WebInspector.GradientSliderKnob.prototype.set stop):
812         (WebInspector.GradientSliderKnob.prototype.get x):
813         (WebInspector.GradientSliderKnob.prototype.set x):
814         (WebInspector.GradientSliderKnob.prototype.get y):
815         (WebInspector.GradientSliderKnob.prototype.set y):
816         (WebInspector.GradientSliderKnob.prototype.get wellColor):
817         (WebInspector.GradientSliderKnob.prototype.set wellColor):
818         (WebInspector.GradientSliderKnob.prototype.get selected):
819         (WebInspector.GradientSliderKnob.prototype.set selected):
820         (WebInspector.GradientSliderKnob.prototype.handleEvent):
821         (WebInspector.GradientSliderKnob.prototype._handleMousedown):
822         (WebInspector.GradientSliderKnob.prototype._handleMousemove):
823         (WebInspector.GradientSliderKnob.prototype._handleMouseup):
824         (WebInspector.GradientSliderKnob.prototype._handleTransitionEnd):
825         (WebInspector.GradientSliderKnob.prototype._updateTransform):
826
827         * UserInterface/Images/Checkers.svg: Added.
828         New asset to draw checkers for color wells.
829
830         * UserInterface/Images/GradientStop.png: Added.
831         * UserInterface/Images/GradientStop@2x.png: Added.
832         * UserInterface/Images/GradientStopSelected.png: Added.
833         * UserInterface/Images/GradientStopSelected@2x.png: Added.
834         New assets used by the gradient slider.
835
836         * UserInterface/Main.html:
837         Link to the new source files.
838
839         * UserInterface/SourceCodeTextEditor.js:
840         (WebInspector.SourceCodeTextEditor.prototype._updateEditableMarkers):
841         Add a call to .createGradientMarkers() such that we support editing of CSS gradients in such editors.
842
843         (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedMarkedExpression):
844         Also recognize gradient markers as valid editable markers.
845
846         * UserInterface/TextEditor.js:
847         (WebInspector.TextEditor.prototype.createGradientMarkers):
848         Wrapper for the CodeMirror extension method .createGradientMarkers() such that it may be used by subclasses
849         that have no knowledge of CodeMirror.
850
851         (WebInspector.TextEditor.prototype.editingControllerForMarker):
852         Return a CodeMirrorGradientEditingController for TextMarkers with WebInspector.TextMarker.Type.Gradient type.
853
854         * UserInterface/TextMarker.js:
855         Add the WebInspector.TextMarker.Type.Gradient type.
856
857 2014-02-20  Antoine Quint  <graouts@webkit.org>
858
859         Web Inspector: create a CodeMirrorEditingController superclass
860         https://bugs.webkit.org/show_bug.cgi?id=129094
861
862         Reviewed by Timothy Hatcher.
863
864         Take code that is generic to editing of any text marker out of CodeMirrorColorEditingController to
865         create a new CodeMirrorEditingController superclass that'll be fit to use for future editing controllers.
866         Additioanlly, we fix existing issues with such editing by supporting text markers spread across several
867         lines and more robustly handling the Esc. key being pressed to dismiss a controller's popover.
868
869         * UserInterface/CSSStyleDeclarationTextEditor.js:
870         (WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches):
871         Adopt the new .createColorMarkers() method signature to provide a TextRange parameter rather than a single
872         line number.
873
874         * UserInterface/CodeMirrorAdditions.js:
875         Remove the .boundsForRange() method in favor of a .rectsForRange() method which will allow us to draw better
876         menus when hovering over a text range by providing tight bounds rather than a large box. We also handle any
877         line wrapping produced by CodeMirror and remove any leading white-space so that the rects are tight to the
878         actual characters in the text marker.
879
880         We also change .createColorMarkers() to take in a TextRange parameter rather than a line number in order to
881         better deal with text markers spread across multiple lines.
882
883         * UserInterface/CodeMirrorColorEditingController.js:
884         Remove any code that is adequate for any editing controller (which is moving to CodeMirrorEditingController).
885         We also adopt new interfaces exposed by CodeMirrorEditingController.
886
887         (WebInspector.CodeMirrorColorEditingController):
888         (WebInspector.CodeMirrorColorEditingController.prototype.get initialValue):
889         (WebInspector.CodeMirrorColorEditingController.prototype.get cssClassName):
890         (WebInspector.CodeMirrorColorEditingController.prototype.popoverWillPresent):
891         (WebInspector.CodeMirrorColorEditingController.prototype.popoverDidPresent):
892         (WebInspector.CodeMirrorColorEditingController.prototype._colorPickerColorChanged):
893
894         * UserInterface/CodeMirrorEditingController.js: Copied from Source/WebInspectorUI/UserInterface/CodeMirrorColorEditingController.js.
895         New class meant to be subclassed by any future editing controller, and already subclassed by
896         CodeMirrorColorEditingController. This class exposes several hooks for subclasses to customize its behavior:
897         
898         .initialValue: a value we can revert to if the editing is canceled
899         .cssClassName: a CSS class name that can be added to the editing controller's container
900         .popoverPreferredEdges: a list of preferredEdges as passed to Popover.prototype.present() with a sensible default
901         .popoverTargetFrameWithRects: a targetFrame passed to Popover.prototype.present(), defaults to a union of provided rects
902         .popoverWillPresent: called as the popover is about to be presented, typically overridden to set the popover's content
903         .popoverDidPresent: called as the popover just was presented, typically overridden when content needs to tuned only after
904         being added to the DOM and setting of the necessary machinery to update the serialized value in the editor based on interaction
905         within the popover without changing the serialized value upon showing the popover the very first time.
906         
907         Additionally, the .value property must be an object supporting .toString() and .copy() method.
908
909         Finally, the .editingControllerDidStartEditing() and .editingControllerDidFinishEditing() delegate methods are fired
910         as editing begins and finishes. 
911
912         (WebInspector.CodeMirrorEditingController):
913         (WebInspector.CodeMirrorEditingController.prototype.get marker):
914         (WebInspector.CodeMirrorEditingController.prototype.get range):
915         (WebInspector.CodeMirrorEditingController.prototype.get value):
916         (WebInspector.CodeMirrorEditingController.prototype.set value):
917         (WebInspector.CodeMirrorEditingController.prototype.get delegate):
918         (WebInspector.CodeMirrorEditingController.prototype.set delegate):
919         (WebInspector.CodeMirrorEditingController.prototype.get text):
920         (WebInspector.CodeMirrorEditingController.prototype.set text):
921         (WebInspector.CodeMirrorEditingController.prototype.get initialValue):
922         (WebInspector.CodeMirrorEditingController.prototype.get cssClassName):
923         (WebInspector.CodeMirrorEditingController.prototype.get popover):
924         (WebInspector.CodeMirrorEditingController.prototype.get popoverPreferredEdges):
925         (WebInspector.CodeMirrorEditingController.prototype.popoverTargetFrameWithRects):
926         (WebInspector.CodeMirrorEditingController.prototype.presentHoverMenu):
927         (WebInspector.CodeMirrorEditingController.prototype.dismissHoverMenu):
928         (WebInspector.CodeMirrorEditingController.prototype.popoverWillPresent):
929         (WebInspector.CodeMirrorEditingController.prototype.popoverDidPresent):
930
931         (WebInspector.CodeMirrorEditingController.prototype.handleKeydownEvent):
932         Event handler for keydown events as registered via the new WebInspector.addWindowKeydownListener() method.
933
934         (WebInspector.CodeMirrorEditingController.prototype.hoverMenuButtonWasPressed):
935         (WebInspector.CodeMirrorEditingController.prototype.didDismissPopover):
936
937         * UserInterface/Geometry.js:
938         (WebInspector.Rect.unionOfRects):
939         (WebInspector.Rect.prototype.unionWithRect):
940         New utilities to get a Rect that is the union of the provided Rect or array of Rects.
941
942         (WebInspector.Polygon):
943         (WebInspector.Polygon.prototype.bounds):
944         New class used to store a list of points for a polygon and get its bounds, used by the HoverMenu class.
945
946         * UserInterface/HoverMenu.css:
947         (.hover-menu):
948         (.hover-menu > svg):
949         (.hover-menu > svg > rect):
950         (.hover-menu > img):
951
952         * UserInterface/HoverMenu.js:
953         We remove the assumption that a HoverMenu is only used to draw a single rounded rect based on a simple
954         Rect and instead support presentation based on an array of Rects where we either:
955         
956         - draw a single rounded rectangle if there is only a single Rect provided
957         - draw two disconnected open-ended rects if we're provided with two non-overlapping Rects
958         - draw a polygon surrounding all provided Rects in all other cases
959
960         No matter how the HoverMenu is drawn, the drawing is performed in SVG with either <rect> or a <path> elements.
961
962         (WebInspector.HoverMenu):
963         (WebInspector.HoverMenu.prototype.present):
964         (WebInspector.HoverMenu.prototype.dismiss):
965         (WebInspector.HoverMenu.prototype.handleEvent):
966         (WebInspector.HoverMenu.prototype._handleClickEvent):
967         (WebInspector.HoverMenu.prototype._drawOutline):
968         (WebInspector.HoverMenu.prototype._addRect):
969         (WebInspector.HoverMenu.prototype._addPath):
970         (WebInspector.HoverMenu.prototype._drawSingleLine):
971         (WebInspector.HoverMenu.prototype._drawTwoNonOverlappingLines):
972         (WebInspector.HoverMenu.prototype._drawOverlappingLines):
973
974         * UserInterface/Main.html:
975         Link to the new CodeMirrorEditingController class.
976
977         * UserInterface/Main.js:
978         Expose a new mechanism to deal with window-level handling of keydown events in order to allow
979         a list of handlers to accept or reject dealing with the provided keydown event based on the order
980         they were registered, in most recent to oldest registered handler. This allows, for instance, for
981         a more graceful handling of the Esc. key being pressed in the CodeMirrorEditingController and
982         bypasses the DOM structure allowing for objects managing elements in different DOM hierarchies
983         to compete with handling of keydown events.
984
985         (WebInspector.loaded):
986         (WebInspector.addWindowKeydownListener):
987         (WebInspector.removeWindowKeydownListener):
988         (WebInspector._updateWindowKeydownListener):
989         (WebInspector._sharedWindowKeydownListener):
990
991         * UserInterface/SourceCodeTextEditor.css:
992         (.hover-menu.color > img):
993         Update the offset applied to a HoverMenu button based on the change of layout for such buttons which
994         are now absolutely positioned in code by HoverMenu rather than being laid out using the flex-box model.
995
996         * UserInterface/SourceCodeTextEditor.js:
997         Abstrct away the assumption that only a color editing controller may be used to edit text markers in
998         a source code text editor.
999
1000         (WebInspector.SourceCodeTextEditor.prototype.hidden):
1001         Ensure we remove any currently-displayed hover menu for an editing controller when the editor is hidden.
1002         This would happen in the situation where a keyboard shortcut was used to jump to another part of the
1003         Web Inspector UI without using the mouse.
1004
1005         (WebInspector.SourceCodeTextEditor.prototype.contentDidChange):
1006         Since we're now working with text ranges rather than lines, remove the code where we'd work out a set of
1007         changed lines and call ._updateEditableMarkers() with the changed range directly instead.
1008
1009         (WebInspector.SourceCodeTextEditor.prototype._contentDidPopulate):
1010         (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerNewHighlightCandidate):
1011         (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerMouseOutOfHoveredMarker):
1012         Adopt the more generic method names rather than color-specific ones.
1013
1014         (WebInspector.SourceCodeTextEditor.prototype._showPopover):
1015         When showing the popover outside of the use of a CodeMirrorEditingController, such as a JavaScript expression
1016         when debugging, also deal with the possibility of the highlighted range containing multiple lines rather
1017         than assume a single line.
1018
1019         (WebInspector.SourceCodeTextEditor.prototype._updateEditableMarkers):
1020         More generic method name to support future, non-color editing controllers.
1021
1022         (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedMarkedExpression):
1023         Find the outermost marker in the list of markers provided such that a marker containing other markers
1024         shows the UI for the containing marker. For instance, a gradient marker would contain several color
1025         markers and it's preferable to show the editing UI for the whole gradient rather than a specific color.
1026
1027         Additionally, adopt more generic ivars and method names to support future, non-color editing controllers.
1028
1029         (WebInspector.SourceCodeTextEditor.prototype._dismissEditingController):
1030         Support for new parameter instructing that the editing controller dismissal should be instant rather than
1031         animated, which is the default. This is useful when, for instance, the text editor is cleared.
1032
1033         (WebInspector.SourceCodeTextEditor.prototype.editingControllerDidStartEditing):
1034         (WebInspector.SourceCodeTextEditor.prototype.editingControllerDidFinishEditing):
1035         Adopt the more generic method names rather than color-specific ones.
1036
1037         * UserInterface/TextEditor.js:
1038         (WebInspector.TextEditor.prototype.rectsForRange):
1039         Remove .boundsForRange() in favor of this new method where we return a series of rects so that we may
1040         draw a more pleasing HoverMenu.
1041
1042         (WebInspector.TextEditor.prototype.createColorMarkers):
1043         Use a TextRanger rather than a single line number to match the underlying CodeMirror extension method.
1044
1045         (WebInspector.TextEditor.prototype.editingControllerForMarker):
1046         Use the provided TextMarker's type to provide the most adequate CodeMirrorEditingController class.
1047
1048         * UserInterface/TextMarker.js:
1049         (WebInspector.TextMarker.prototype.get rects):
1050         Remove the .bounds property in favor of .rects to match the underlying CodeMirror extension method.
1051
1052 2014-02-20  Antoine Quint  <graouts@webkit.org>
1053
1054         Web Inspector: Popover should animate its frame to display its refreshed content
1055         https://bugs.webkit.org/show_bug.cgi?id=129088
1056
1057         Reviewed by Timothy Hatcher.
1058
1059         When calling .update(), we now check whether we can animate the change of frame provided the
1060         new computed frame to best fit the current content still matches the edge the popover uses
1061         to attach to the target frame. If we find that we can do so, we animate the background frame
1062         of the popover while ensuring the anchor point remains stable during the animation such that
1063         only the popover's frame seems to animate.
1064
1065         * UserInterface/Geometry.js:
1066         (WebInspector.Rect.prototype.round):
1067         Returns a new Rect with rounded values, using a floor for the position and a ceil for the size.
1068
1069         * UserInterface/Main.html:
1070         Link to the new UnitBezier.js source file.
1071
1072         * UserInterface/Popover.js:
1073         (WebInspector.Popover):
1074         Make ._anchorPoint an ivar such that we don't need to pass a reference to the anchorPoint into
1075         the various calls leading to an update of the popover's background drawing.
1076
1077         (WebInspector.Popover.prototype.set frame):
1078         We no longer round the values of the frame here, instead calling the new .round() method on Rect
1079         in places where we compute a new frame.
1080
1081         (WebInspector.Popover.prototype.set content):
1082         (WebInspector.Popover.prototype.update):
1083         Update the calls to ._update() to set the new shouldAnimate flag to true in situations where the
1084         popover is already visible.
1085
1086         (WebInspector.Popover.prototype._update):
1087         In the situation where there is a preference to animate the frame, as set by the new shouldAnimate
1088         parameter, check that we can indeed animate by ensuring that the edge the popover uses to attach to
1089         the target frame remains the same upon computing the new best metrics for the new content size. If
1090         we can indeed animate, call _animateFrame(), otherwise set the new frame, anchor point and frame
1091         drawing discretely like we used to.
1092
1093         (WebInspector.Popover.prototype._setAnchorPoint):
1094         New method to ensure we floor the position of the anchor point to ensure, when animating, that the
1095         anchor point remains stationary.
1096
1097         (WebInspector.Popover.prototype._animateFrame):
1098         Using the new UnitBezier class, animate the popover frame from its previous value to its newly computed
1099         value while ensuring the anchor point remains, at all times, the same absolute position such that it
1100         remains stationary during the animation. The spline used to animate the frame is the same that a CSS
1101         transition set with an "ease" timing-function (default value) would use.
1102
1103         (WebInspector.Popover.prototype._drawBackground):
1104         (WebInspector.Popover.prototype._drawFrame):
1105         Adopt new ._edge and ._anchorPoint ivars.
1106
1107         * UserInterface/UnitBezier.js: Added.
1108         New class used to perform animations using a timing function specified with a cubic Bézier curve. The code
1109         is directly adapted from the Source/WebCore/platform/graphics/UnitBezier.h file.
1110
1111         (WebInspector.UnitBezier):
1112         (WebInspector.UnitBezier.prototype.solve):
1113         (WebInspector.UnitBezier.prototype._sampleCurveX):
1114         (WebInspector.UnitBezier.prototype._sampleCurveY):
1115         (WebInspector.UnitBezier.prototype._sampleCurveDerivativeX):
1116         (WebInspector.UnitBezier.prototype._solveCurveX):
1117
1118 2014-02-20  Antoine Quint  <graouts@webkit.org>
1119
1120         Web Inspector: content using a CSS transition within a popover causes the popover to disappear
1121         https://bugs.webkit.org/show_bug.cgi?id=129089
1122
1123         Reviewed by Timothy Hatcher.
1124
1125         Simply check that the element being transitioned is indeed the popover's container before assuming
1126         that the "transitonend" received was for a fade-out transition.
1127
1128         * UserInterface/Popover.js:
1129         (WebInspector.Popover.prototype.handleEvent):
1130
1131 2014-02-20  Antoine Quint  <graouts@webkit.org>
1132
1133         Web Inspector: clicking on a color swatch in the Computed styles tab shouldn't show the color editing popover
1134         https://bugs.webkit.org/show_bug.cgi?id=129093
1135
1136         Reviewed by Timothy Hatcher.
1137
1138         If the current editor is read-only, only allow cycling between color types since it wouldn't make sense to edit
1139         such colors.
1140
1141         * UserInterface/CSSStyleDeclarationTextEditor.js:
1142
1143 2014-02-19  Joseph Pecoraro  <pecoraro@apple.com>
1144
1145         Web Inspector: Remove unused InspectorBackend member variable
1146         https://bugs.webkit.org/show_bug.cgi?id=129053
1147
1148         Reviewed by Timothy Hatcher.
1149
1150         * UserInterface/InspectorBackend.js:
1151         (InspectorBackendClass):
1152         (InspectorBackendClass.prototype.registerCommand):
1153         (InspectorBackendClass.prototype.registerEnum):
1154         (InspectorBackendClass.prototype.registerEvent):
1155
1156 2014-02-19  James Craig  <jcraig@apple.com>
1157
1158         Web Inspector: AX: clarify reason for ignored state where possible (hidden, default for tag, etc)
1159         https://bugs.webkit.org/show_bug.cgi?id=129037
1160
1161         Reviewed by Timothy Hatcher.
1162
1163         Passing back hidden and ignoredByDefault attrs to clarify some reasons for "ignored" status.
1164
1165         * Localizations/en.lproj/localizedStrings.js:
1166         * UserInterface/DOMNode.js:
1167         * UserInterface/DOMNodeDetailsSidebarPanel.js:
1168
1169 2014-02-18  James Craig  <jcraig@apple.com>
1170
1171         Web Inspector: AX: more properties: exists, required, and invalid (exists was previously combined with ignored)
1172         https://bugs.webkit.org/show_bug.cgi?id=128504
1173
1174         Reviewed by Timothy Hatcher.
1175
1176         Additions to the accessibility node inspector: exists, required, invalid.
1177
1178         * Localizations/en.lproj/localizedStrings.js:
1179         * UserInterface/DOMNode.js:
1180         * UserInterface/DOMNodeDetailsSidebarPanel.js:
1181
1182 2014-02-18  Antoine Quint  <graouts@webkit.org>
1183
1184         Web Inspector: editing a color in the Styles sidebar using the color picker only works once for a given color
1185         https://bugs.webkit.org/show_bug.cgi?id=128965
1186
1187         Reviewed by Timothy Hatcher.
1188
1189         Use the WebInspector.TextMarker backing the CodeMirror TextMarker object to inspect its type in
1190         order to identify color markers that were created for a color. This fixes a regression introduced
1191         in http://webkit.org/b/125695 when we abstracted CodeMirror TextMarker objects.
1192
1193         * UserInterface/CSSStyleDeclarationTextEditor.js:
1194         (WebInspector.CSSStyleDeclarationTextEditor.prototype._colorSwatchClicked.updateCodeMirror.update):
1195         (WebInspector.CSSStyleDeclarationTextEditor.prototype._colorSwatchClicked.updateCodeMirror):
1196
1197 2014-02-18  Antoine Quint  <graouts@webkit.org>
1198
1199         Web Inspector: Editing transparent color shows incorrect opacity slider
1200         https://bugs.webkit.org/show_bug.cgi?id=128975
1201
1202         Reviewed by Joseph Pecoraro.
1203
1204         The opacity slider should show a range of colors from transparent to the full opacity of the tinted color.
1205
1206         * UserInterface/ColorPicker.js:
1207         (WebInspector.ColorPicker.prototype._updateSliders):
1208
1209 2014-02-18  Joseph Pecoraro  <pecoraro@apple.com>
1210
1211         Web Inspector: shift-clicking #fff swatch results in bad rgb value
1212         https://bugs.webkit.org/show_bug.cgi?id=128954
1213
1214         Reviewed by Daniel Bates.
1215
1216         parseInt("FF", 16) is already 255. Do not multiply the result by 255.
1217
1218         * UserInterface/Color.js:
1219         (WebInspector.Color.fromString):
1220
1221 2014-02-18  Antoine Quint  <graouts@webkit.org>
1222
1223         Web Inspector: color picker sliders sometime look wrong on Retina display
1224         https://bugs.webkit.org/show_bug.cgi?id=128963
1225
1226         Reviewed by Timothy Hatcher.
1227
1228         Round the values used to position and size popovers in order to ensure that their content don't suffer
1229         from poor pixel alignment on Retina displays.
1230
1231         * UserInterface/Popover.js:
1232         (WebInspector.Popover.prototype.set frame):
1233
1234 2014-02-17  Antoine Quint  <graouts@webkit.org>
1235
1236         Web Inspector: CSS selectors containing a color name shouldn't be considered for color editing
1237         https://bugs.webkit.org/show_bug.cgi?id=128909
1238
1239         Reviewed by Joseph Pecoraro.
1240
1241         Disregard any text that might be contained within a CSS selector.
1242
1243         * UserInterface/CodeMirrorAdditions.js:
1244
1245 2014-02-15  Chris J. Shull  <chrisjshull@gmail.com>
1246
1247         Web Inspector: scope chain details sidebar doesn't update values modified via console
1248         https://bugs.webkit.org/show_bug.cgi?id=126855
1249
1250         Reviewed by Timothy Hatcher.
1251
1252         Add a RuntimeManager event that the scope chain details sidebar can 
1253         listen to to trigger refresh.
1254
1255         Testing on this is blocked by http://webkit.org/b/128724
1256         (Web Inspector: Issue testing breakpoints).
1257
1258         * UserInterface/RuntimeManager.js:
1259         (WebInspector.RuntimeManager.prototype.evalCallback):
1260         (WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
1261         * UserInterface/ScopeChainDetailsSidebarPanel.js:
1262         (WebInspector.ScopeChainDetailsSidebarPanel):
1263
1264 2014-02-14  Antoine Quint  <graouts@webkit.org>
1265
1266         Web Inspector: color wheel should support Retina displays
1267         https://bugs.webkit.org/show_bug.cgi?id=124355
1268
1269         Reviewed by Timothy Hatcher.
1270
1271         Take into account the devicePixelRatio in order to draw the color wheel
1272         with as many colors as we can draw with the current DPI and to correctly
1273         convert from page coordinates to canvas coordinates when dealing with
1274         mouse events.
1275
1276         * UserInterface/ColorWheel.js:
1277         (WebInspector.ColorWheel.prototype.set dimension):
1278         (WebInspector.ColorWheel.prototype.get tintedColor):
1279         (WebInspector.ColorWheel.prototype.get rawColor):
1280         (WebInspector.ColorWheel.prototype._drawRawCanvas):
1281         (WebInspector.ColorWheel.prototype._colorAtPointWithBrightness):
1282         (WebInspector.ColorWheel.prototype._drawTintedCanvas):
1283         (WebInspector.ColorWheel.prototype._draw):
1284
1285 2014-02-13  Brian Burg  <bburg@apple.com>
1286
1287         Web Inspector: DataGrid should support editing tables with arbitrary columns
1288         https://bugs.webkit.org/show_bug.cgi?id=128619
1289
1290         Reviewed by Timothy Hatcher.
1291
1292         The data grid editing code should work with any columns, but was previously
1293         hardcoded with the column identifiers used by DOMStorageView. This patch
1294         makes the editing code work with any column identifiers. It also fixes some
1295         bugs in previous/next navigation during data entry.
1296
1297         * UserInterface/DOMStorageContentView.css: Highlight missing keys and values.
1298         (.content-view.dom-storage > .data-grid tr.missing-value td.value-column):
1299         (.content-view.dom-storage > .data-grid:focus tr.selected.missing-value td.value-column):
1300
1301         * UserInterface/DOMStorageContentView.js: Don't blow away the entire table
1302         whenever the backend notifies us of an update to the storage object. This
1303         caused the editing state to be destroyed when values were entered interactively.
1304
1305         (WebInspector.DOMStorageContentView.prototype.reset): Inline the callback
1306         passed to DOMStorageObject.getEntries().
1307         (WebInspector.DOMStorageContentView.prototype.itemsCleared):
1308         (WebInspector.DOMStorageContentView.prototype.itemAdded): Request a sort
1309         of the table rows after backend tells us about item additions or updates.
1310
1311         (WebInspector.DOMStorageContentView.prototype.itemUpdated): Request a sort
1312         of the table rows after backend tells us about item additions or updates.
1313
1314         (WebInspector.DOMStorageContentView.prototype._sortDataGrid): Use DataGrid's
1315         built-in sorting function.
1316
1317         (WebInspector.DOMStorageContentView.prototype._deleteCallback):
1318         (WebInspector.DOMStorageContentView.prototype._editingCallback): Don't force
1319         recreation of the entire table whenever editing finishes. Perform most
1320         of the error checking and editing logic here, including when to insert a
1321         new placeholder row, and when to commit the entered values to DOM storage.
1322
1323         * UserInterface/DOMStorageObject.js: Keep track of the DOM storage entries
1324         in the model so we can detect duplicate entries. Remove unused `id` arguments.
1325
1326         (WebInspector.DOMStorageObject):
1327         (WebInspector.DOMStorageObject.prototype.get entries):
1328         (WebInspector.DOMStorageObject.prototype.itemsCleared):
1329         (WebInspector.DOMStorageObject.prototype.itemRemoved):
1330         (WebInspector.DOMStorageObject.prototype.set this):
1331         (WebInspector.DOMStorageObject.prototype.itemAdded):
1332         (WebInspector.DOMStorageObject.prototype.set var):
1333         (WebInspector.DOMStorageObject.prototype.itemUpdated):
1334
1335         * UserInterface/DataGrid.js:
1336         (.sortDataGrid):
1337         (WebInspector.DataGrid.createSortableDataGrid): Use the built-in DataGrid
1338         sortNodes() implementation.
1339         (WebInspector.DataGrid.prototype._startEditingNodeAtColumnIndex): Renamed
1340         from _startEditingColumnOfDataGridNode. It's easier to understand the navigation
1341         code when presented in terms of adjusting column indexes rather than identifiers.
1342
1343         (WebInspector.DataGrid.prototype._startEditing):
1344         (WebInspector.DataGrid.prototype.determineNextCell): Added. Decides which
1345         column and row to edit next and whether the table can be sorted before the
1346         next cell edit begins.
1347
1348         (WebInspector.DataGrid.prototype.moveToNextCell): Added. Wrapper method for
1349         the above which handles sorting and beginning the next cell edit.
1350
1351         (WebInspector.DataGrid.prototype._editingCommitted): Use better helper methods.
1352         (WebInspector.DataGrid.prototype._editingCancelled): Add an assert.
1353         (WebInspector.DataGrid.prototype.get sortColumnIdentifier): Shorten.
1354         (WebInspector.DataGrid.prototype.addPlaceholderNode):
1355         (WebInspector.DataGrid.prototype.removeChild):
1356         (WebInspector.DataGrid.prototype.):
1357         (WebInspector.DataGrid.prototype.sortNodes): Remove unecessary copying
1358         of all nodes into a separate array. Defer sorting if the user is in the
1359         middle of editing a cell. Make placeholder nodes always sort to the bottom
1360         regardless of the sort column identifier and sort direction.
1361
1362         (WebInspector.DataGridNode.prototype._attach):
1363         (WebInspector.PlaceholderDataGridNode): Renamed from CreationDataGridNode.
1364         (WebInspector.PlaceholderDataGridNode.prototype.makeNormal):
1365
1366         * UserInterface/StorageManager.js: Don't pass unused id argument.
1367         (WebInspector.StorageManager.prototype.itemRemoved):
1368         (WebInspector.StorageManager.prototype.itemAdded):
1369         (WebInspector.StorageManager.prototype.itemUpdated):
1370
1371 2014-02-13  Brian Burg  <bburg@apple.com>
1372
1373         Web Inspector: long script names should be have text-overflow:ellipsis in probe details sidebar
1374         https://bugs.webkit.org/show_bug.cgi?id=128550
1375
1376         Reviewed by Timothy Hatcher.
1377
1378         Make the link element 'display: block', place it after the floated icons,
1379         and set the appropriate CSS overflow properties.
1380
1381         * UserInterface/ProbeDetailsSidebarPanel.css:
1382         (.details-section.probe-set .options > a.go-to-link):
1383         * UserInterface/ProbeSetDetailsSection.js:
1384         (WebInspector.ProbeSetDetailsSection):
1385
1386 2014-02-13  Javier Fernandez  <jfernandez@igalia.com>
1387
1388         [CSS Grid Layout] Rename named areas property
1389         https://bugs.webkit.org/show_bug.cgi?id=127990
1390
1391         Reviewed by Sergio Villar Senin.
1392
1393         From Blink r165891 by <rego@igalia.com>
1394
1395         The property 'grid-template' has been renamed to 'grid-template-areas'
1396         in the last two versions of the spec.
1397
1398         * Tools/PrettyPrinting/css.js:
1399         * UserInterface/External/CodeMirror/css.js:
1400
1401 2014-02-11  Brian Burg  <bburg@apple.com>
1402
1403         Web Inspector: DOMStorageView should listen for events from DOMStorageObject
1404         https://bugs.webkit.org/show_bug.cgi?id=128620
1405
1406         Reviewed by Timothy Hatcher.
1407
1408         The storage manager used to have a map of DOMStorageViews and delivered events
1409         directly to them. Instead, the DOMStorageObserver should use the manager to
1410         find the appropriate DOMStorageObject and deliver events to it. DOMStorageView
1411         learns about storage updates from DOMStorageObject events.
1412
1413         * UserInterface/DOMStorageContentView.js:
1414         (WebInspector.DOMStorageContentView): Add event listeners.
1415         (WebInspector.DOMStorageContentView.prototype.reset): Renamed from update().
1416         (WebInspector.DOMStorageContentView.prototype.itemsCleared): Take an event argument.
1417         (WebInspector.DOMStorageContentView.prototype.itemRemoved): Take an event argument.
1418         Use for..of when iterating over nodes.
1419         (WebInspector.DOMStorageContentView.prototype.itemAdded): Take an event argument.
1420         Use for..of when iterating over nodes.
1421         (WebInspector.DOMStorageContentView.prototype.itemUpdated): Take an event argument.
1422         Use for..of when iterating over nodes.
1423         * UserInterface/DOMStorageObject.js:
1424         (WebInspector.DOMStorageObject.prototype.removeItem): Moved.
1425         (WebInspector.DOMStorageObject.prototype.setItem): Moved.
1426         (WebInspector.DOMStorageObject.prototype.itemsCleared): Added.
1427         (WebInspector.DOMStorageObject.prototype.itemRemoved): Added.
1428         (WebInspector.DOMStorageObject.prototype.itemAdded): Added.
1429         (WebInspector.DOMStorageObject.prototype.itemUpdated): Added.
1430         * UserInterface/DOMStorageObserver.js: Look up and notify the associated model.
1431         (WebInspector.DOMStorageObserver.prototype.domStorageItemsCleared):
1432         (WebInspector.DOMStorageObserver.prototype.domStorageItemRemoved):
1433         (WebInspector.DOMStorageObserver.prototype.domStorageItemAdded):
1434         (WebInspector.DOMStorageObserver.prototype.domStorageItemUpdated):
1435         * UserInterface/StorageManager.js: Remove view lookup code. Remove
1436         direct calls to DOMStorageViews.
1437         (WebInspector.StorageManager.prototype.itemsCleared):
1438         (WebInspector.StorageManager.prototype.itemRemoved):
1439         (WebInspector.StorageManager.prototype.itemAdded):
1440         (WebInspector.StorageManager.prototype.itemUpdated):
1441         (WebInspector.StorageManager.prototype.domStorageWasUpdated):
1442         (WebInspector.StorageManager.prototype.inspectDOMStorage):
1443         (WebInspector.StorageManager.prototype._domStorageForIdentifier):
1444         (WebInspector.StorageManager.prototype._addDOMStorageIfNeeded):
1445         (WebInspector.StorageManager.prototype._databaseForIdentifier):
1446
1447 2014-02-11  James Craig  <jcraig@apple.com>
1448
1449         Web Inspector: AX: Accessibility Node Inspection
1450         https://bugs.webkit.org/show_bug.cgi?id=127447
1451
1452         Reviewed by Timothy Hatcher.
1453
1454         New Accessibility section in WebInspector Node Inspector.
1455         Version 1.0 only shows computed role. Computed label should come soon.
1456
1457         Removed CSS fixed table layout b/c CSS bug: http://webkit.org/b/128294
1458
1459         * Localizations/en.lproj/localizedStrings.js:
1460         * UserInterface/DOMNode.js:
1461         * UserInterface/DOMNodeDetailsSidebarPanel.js:
1462         * UserInterface/DetailsSection.css:
1463         * UserInterface/InspectorWebBackendCommands.js:
1464
1465 2014-02-10  Joseph Pecoraro  <pecoraro@apple.com>
1466
1467         Web Inspector: Update License copyrights in minified JavaScript
1468         https://bugs.webkit.org/show_bug.cgi?id=128547
1469
1470         Reviewed by Timothy Hatcher.
1471
1472         * Scripts/copy-user-interface-resources.sh:
1473
1474 2014-02-07  Brian Burg  <bburg@apple.com>
1475
1476         Web Inspector: show probe sets for script content views in the details sidebar
1477         https://bugs.webkit.org/show_bug.cgi?id=128333
1478
1479         Reviewed by Timothy Hatcher.
1480
1481         This patch adds a new details sidebar for showing the probes associated with any
1482         breakpoint in the currently visible source file. Each probe set (corresponding to
1483         multiple actions of single breakpoint) gets its own ProbeSetDetailsSection. The
1484         section contains a custom DataGrid subclass to display probe data, and some icons
1485         for clearing samples, deleting the probe, and adding a new probe expression.
1486
1487         The table containing probe data keeps its columns in sync with the probe set's
1488         probe expressions. To support this, DataGrid has been further refactored to support
1489         removing columns, and inserting columns (rather than only appending). With this
1490         capability, probe columns are removed and re-inserted when the expression changes.
1491
1492         The availability of the probe details sidebar is controlled by providing the
1493         probe sets matching the script content view's resource URL as supplemental
1494         represented objects.
1495
1496         Lastly, added the utility EventListenerSet class. This holds a set of event listeners
1497         that should be added and removed together, and takes care of binding `thisObject`
1498         according to whether the event emitter is a `Node` or `WebInspector.Object`.
1499
1500         * Localizations/en.lproj/localizedStrings.js:
1501         * UserInterface/BreakpointActionView.js:
1502         (WebInspector.BreakpointActionView):
1503         (WebInspector.BreakpointActionView.prototype._removeAction): Renamed from removeButtonClicked.
1504         (WebInspector.BreakpointActionView.prototype._codeMirrorBlurred): Change the behavior
1505         of CodeMirror-backed editors for probe and evaluate expression actions. If the expression
1506         consists entirely of trimmable whitespace, then delete the action rather than saving it.
1507
1508         * UserInterface/DataGrid.js:
1509         (WebInspector.DataGrid): Copy over the column data into a map inside insertColumn() instead.
1510         (WebInspector.DataGrid.prototype.insertColumn): Renamed from addColumn. It now takes an
1511         optional `insertionIndex` argument and splices the column before the element at that index.
1512         Also, convert code to use EventListenerSet for adding/removing per-column event listeners.
1513
1514         (WebInspector.DataGrid.prototype.removeColumn): Added. It splices the column out.
1515         (WebInspector.DataGridNode.prototype.isEventWithinDisclosureTriangle): Whitespace.
1516         * UserInterface/EventListenerSet.js: Added.
1517         (WebInspector.EventListenerSet):
1518         (WebInspector.EventListenerSet.prototype.register):
1519         (WebInspector.EventListenerSet.prototype.unregister):
1520         (WebInspector.EventListenerSet.prototype.install):
1521         (WebInspector.EventListenerSet.prototype.uninstall):
1522         * UserInterface/Images/NavigationItemProbes.pdf: Added.
1523         * UserInterface/LayerTreeDataGrid.js:
1524         (WebInspector.LayerTreeDataGrid.prototype._updateChildren): Fix a missing column.get().
1525         * UserInterface/Main.html: Add new JavaScript and CSS files.
1526         * UserInterface/Main.js:
1527         (WebInspector.contentLoaded): Add the probe details sidebar.
1528         * UserInterface/ProbeDetailsSidebarPanel.css: Added.
1529         (.sidebar > .panel.probes > .navigation-bar):
1530         (.sidebar > .panel.probes > .content):
1531         (.details-section.probe-set .options > .probe-add):
1532         (.details-section.probe-set .options > .probe-clear-samples):
1533         (.details-section.probe-set .options > .probe-remove):
1534         (.details-section.probe-set .options > input):
1535         (.panel.probes ::-webkit-scrollbar):
1536         (.panel.probes ::-webkit-scrollbar-track):
1537         (.panel.probes ::-webkit-scrollbar-thumb):
1538         (.panel.probes ::-webkit-scrollbar-corner):
1539         (.popover .probe-popover):
1540         (.popover .probe-popover input):
1541         * UserInterface/ProbeDetailsSidebarPanel.js: Added.
1542         (WebInspector.ProbeDetailsSidebarPanel):
1543         (WebInspector.ProbeDetailsSidebarPanel.prototype.get inspectedProbeSets):
1544         (WebInspector.ProbeDetailsSidebarPanel.prototype._probeSetAdded):
1545         * UserInterface/ProbeManager.js: Remove unused `probeSetForBreakpoint` function.
1546         * UserInterface/ProbeSet.js: Fix erroneous uses of `probe.identifier` instead of `probe.id`.
1547         (WebInspector.ProbeSet.prototype.removeProbe):
1548         (WebInspector.ProbeSet.prototype._sampleCollected):
1549         * UserInterface/ProbeSetDataGrid.css: Added.
1550         (.details-section.probe-set .data-grid .data-container tr.past-value td):
1551         (.details-section.probe-set .data-grid > .data-container td.unknown-value):
1552         (.details-section.probe-set .data-grid .data-container tr.revealed.highlighted):
1553         (@-webkit-keyframes blink-frame-highlight):
1554         (100%):
1555         (.details-section.probe-set .data-grid .data-container tr.separator):
1556         (.details-section.probe-set .data-grid > .data-container tr.data-updated):
1557         (@-webkit-keyframes blink-probe-frame):
1558         (.details-section.probe-set .data-grid .data-container .selected .section *):
1559         (.details-section.probe-set .data-grid .data-container .selected td.unknown-value):
1560         (.details-section.probe-set .data-grid .data-container .section):
1561         (.details-section.probe-set .data-grid th):
1562         (.details-section.probe-set .data-grid th:not(:last-child)):
1563         (.details-section.probe-set .data-grid td):
1564         * UserInterface/ProbeSetDataGrid.js: Added.
1565         (WebInspector.ProbeSetDataGrid):
1566         (WebInspector.ProbeSetDataGrid.prototype.closed):
1567         (WebInspector.ProbeSetDataGrid.prototype._setupProbe):
1568         (WebInspector.ProbeSetDataGrid.prototype._teardownProbe):
1569         (WebInspector.ProbeSetDataGrid.prototype._setupData):
1570         (WebInspector.ProbeSetDataGrid.prototype._teardownData):
1571         (WebInspector.ProbeSetDataGrid.prototype._updateNodeForFrame.else.sortFunction):
1572         (WebInspector.ProbeSetDataGrid.prototype._updateNodeForFrame.else.set node):
1573         (WebInspector.ProbeSetDataGrid.prototype._dataFrameInserted):
1574         (WebInspector.ProbeSetDataGrid.prototype._dataSeparatorInserted):
1575         (WebInspector.ProbeSetDataGrid.prototype._probeExpressionChanged.get var):
1576         * UserInterface/ProbeSetDataGridNode.js: Added.
1577         (WebInspector.ProbeSetDataGridNode):
1578         (WebInspector.ProbeSetDataGridNode.prototype.get element):
1579         (WebInspector.ProbeSetDataGridNode.prototype.get data):
1580         (WebInspector.ProbeSetDataGridNode.prototype.set frame):
1581         (WebInspector.ProbeSetDataGridNode.prototype.get frame):
1582         (WebInspector.ProbeSetDataGridNode.prototype.createCellContent):
1583         (WebInspector.ProbeSetDataGridNode.prototype.updateCellsFromFrame):
1584         (WebInspector.ProbeSetDataGridNode.prototype.updateCellsForSeparator):
1585         * UserInterface/ProbeSetDataTable.js:
1586         (WebInspector.ProbeSetDataTable.prototype.removeProbe): Fix a typo in for..of loop refactor.
1587         * UserInterface/ProbeSetDetailsSection.js: Added.
1588         (WebInspector.ProbeSetDetailsSection):
1589         (WebInspector.ProbeSetDetailsSection.prototype.closed):
1590         (WebInspector.ProbeSetDetailsSection.prototype._probeSetPositionTextOrLink):
1591         (WebInspector.ProbeSetDetailsSection.prototype._addProbeButtonClicked):
1592         (WebInspector.ProbeSetDetailsSection.prototype._removeButtonClicked):
1593         (WebInspector.ProbeSetDetailsSection.prototype._clearSamplesButtonClicked):
1594         * UserInterface/TextResourceContentView.js:
1595         (WebInspector.TextResourceContentView):
1596         (WebInspector.TextResourceContentView.prototype.get supplementalRepresentedObjects):
1597         Add probe sets whose breakpoint matches the represented object's URL.
1598         (WebInspector.TextResourceContentView.prototype._probeSetsChanged): Tell listeners
1599         to re-fetch `supplementalRepresentedObjects` when probe sets are added or removed.
1600
1601 2014-02-08  Dan Bernstein  <mitz@apple.com>
1602
1603         Remove client-drawn highlights (-webkit-highlight, WebHTMLHighlighter)
1604         https://bugs.webkit.org/show_bug.cgi?id=128456
1605
1606         Reviewed by Anders Carlsson.
1607
1608         * UserInterface/CSSKeywordCompletions.js: Removed -webkit-highlight.
1609
1610 2014-02-07  Brian Burg  <bburg@apple.com>
1611
1612         Web Inspector: Clean up DataGrid and add table columns incrementally
1613         https://bugs.webkit.org/show_bug.cgi?id=128332
1614
1615         Reviewed by Timothy Hatcher.
1616
1617         Miscellaneous improvements to DataGrid to make it more maintainable.
1618         In particular, it now uses a `Map` to store column settings, and the
1619         construction sequence has been simplified so that it is safe to add
1620         columns at the end of the constructor (or any later time).
1621
1622         DataGrid stores a bunch of settings per-column, but before this was done
1623         by both storing properties on the provided `column` objects as well as
1624         keeping several `columnIdentifier`-keyed maps for properties like `group`
1625         and `hidden`.
1626
1627         Improve code readability by using for..of loops, destructuring assignment,
1628         `Node.createElement`, and updating variable names. All variables that refer
1629         to DOM nodes now have a `Element` suffix to distinguish them from model objects.
1630
1631         * UserInterface/DataGrid.js:
1632         (.sortDataGrid):
1633         (WebInpector.DataGrid): Create all DOM elements before populating columns.
1634         Remove redundant objects for storing per-column values. Copy column settings
1635         into a map rather than mutating the passed-in JSON-like settings data structure.
1636
1637         (WebInspector.DataGrid.createSortableDataGrid):
1638         (WebInspector.DataGrid.prototype.get length):
1639         (WebInspector.DataGrid.prototype.updateLayout):
1640         (WebInspector.DataGrid.prototype.get scrollContainer):
1641         (WebInspector.DataGrid.prototype.isScrolledToLastRow):
1642         (WebInspector.DataGrid.prototype.scrollToLastRow):
1643         (WebInspector.DataGrid.prototype._positionResizerElements):
1644         (WebInspector.DataGrid.prototype.addCreationNode):
1645         (WebInspector.DataGrid.prototype.):
1646         (WebInspector.DataGrid.prototype.sortNodes):
1647         (WebInspector.DataGrid.prototype.dataGridNodeFromPoint):
1648         (WebInspector.DataGrid.prototype._clickInHeaderCell):
1649         (WebInspector.DataGrid.prototype.isColumnSortColumn):
1650         (WebInspector.DataGrid.prototype.headerTableHeader):
1651         (WebInspector.DataGrid.prototype._copyTextForDataGridNode):
1652         (WebInspector.DataGrid.prototype._resizerDragging):
1653         (WebInspector.DataGridNode.prototype.createCells):
1654         (WebInspector.DataGridNode.prototype.createCell.get var):
1655         (WebInspector.DataGridNode.prototype.elementWithColumnIdentifier):
1656         (WebInspector.DataGridNode.prototype._attach):
1657         * UserInterface/TimelineDataGrid.js:
1658         (WebInspector.TimelineDataGrid.prototype.treeElementMatchesActiveScopeFilters.scopeBar.this.columns.get scopeBar):
1659         (WebInspector.TimelineDataGrid.prototype.treeElementMatchesActiveScopeFilters):
1660
1661 2014-02-07  Mihai Tica  <mitica@adobe.com>
1662
1663         [CSS Background Blending] Unprefix the -webkit-background-blend-mode property
1664
1665         https://bugs.webkit.org/show_bug.cgi?id=128270
1666
1667         Reviewed by Dean Jackson.
1668
1669         * UserInterface/CSSKeywordCompletions.js: Refactor -webkit-background-blend-mode to background-blend-mode.
1670
1671 2014-02-06  Joseph Pecoraro  <pecoraro@apple.com>
1672
1673         Web Inspector: Add Console support to JSContext Inspection
1674         https://bugs.webkit.org/show_bug.cgi?id=127941
1675
1676         Reviewed by Geoffrey Garen.
1677
1678         * UserInterface/InspectorJSBackendCommands.js:
1679         * UserInterface/InspectorWebBackendCommands.js:
1680         ConsoleAgent moved to JavaScript section.
1681
1682 2014-02-06  Andreas Kling  <akling@apple.com>
1683
1684         Remove display:run-in support.
1685         <https://webkit.org/b/127874>
1686         <rdar://problem/15926949>
1687
1688         Rubber-stamped by Anders Carlsson.
1689
1690         * UserInterface/CSSKeywordCompletions.js:
1691         * UserInterface/External/CodeMirror/css.js:
1692
1693 2014-02-05  Brian Burg  <bburg@apple.com>
1694
1695         Web Inspector: add probe manager and model objects to the frontend
1696         https://bugs.webkit.org/show_bug.cgi?id=127117
1697
1698         Reviewed by Timothy Hatcher.
1699
1700         Add the probe manager, and the following model objects:
1701
1702         - ProbeObject corresponds to a single probe breakpoint action.
1703         - ProbeSetObject contains all ProbeObjects for one Breakpoint.
1704         - ProbeSetDataFrame holds probe samples from multiple
1705         probes fired from the same breakpoint hit/debugger pause.
1706         - ProbeSetDataTable keeps track of multiple such data frames
1707         and manages probe sample lifetimes across page navigations.
1708
1709         The probe manager updates probe model objects whenever breakpoints
1710         are added, removed, or modified.
1711
1712         The inspector frontend now assigns breakpoint action identifiers,
1713         rather than the backend. This lets ProbeObjects keep stable
1714         identifiers that match the probe's samples, even when the underlying
1715         breakpoint is re-added with a different identifier (such as when
1716         editing probe expressions).
1717
1718         * UserInterface/Breakpoint.js:
1719         (WebInspector.Breakpoint.prototype.get probeActions): Added.
1720         (WebInspector.Breakpoint.prototype.createAction):
1721         (WebInspector.Breakpoint.prototype.removeAction):
1722         (WebInspector.Breakpoint.prototype.clearActions): Added.
1723         * UserInterface/BreakpointAction.js:
1724         (WebInspector.BreakpointAction):
1725         (WebInspector.BreakpointAction.prototype.get id):
1726         (WebInspector.BreakpointAction.prototype.get info):
1727         * UserInterface/DebuggerManager.js:
1728         (WebInspector.DebuggerManager.restoreBreakpointsSoon):
1729         (WebInspector.DebuggerManager): Restore saved breakpoints
1730         from cookies on the second run loop, so that all managers will
1731         be able to received breakpoint added events.
1732         (WebInspector.DebuggerManager.prototype.addBreakpoint):
1733         (WebInspector.DebuggerManager.prototype.removeBreakpoint):
1734         (WebInspector.DebuggerManager.prototype.get nextBreakpointActionIdentifier):
1735         The debugger manager assigns unique breakpoint action identifiers with this getter.
1736
1737         (WebInspector.DebuggerManager.prototype._debuggerBreakpointActionType):
1738         (WebInspector.DebuggerManager.prototype.didSetBreakpoint):
1739         (WebInspector.DebuggerManager.prototype._setBreakpoint):
1740         (WebInspector.DebuggerManager.prototype.didRemoveBreakpoint):
1741         (WebInspector.DebuggerManager.prototype._removeBreakpoint):
1742         * UserInterface/DebuggerObserver.js:
1743         (WebInspector.DebuggerObserver.prototype.didSampleProbe):
1744         * UserInterface/InspectorJSBackendCommands.js:
1745         * UserInterface/Main.html:
1746         * UserInterface/Main.js:
1747         (WebInspector.loaded):
1748         * UserInterface/Probe.js: Added.
1749         (WebInspector.ProbeSample):
1750         (WebInspector.Probe):
1751         (WebInspector.Probe.prototype.get id):
1752         (WebInspector.Probe.prototype.get breakpoint):
1753         (WebInspector.Probe.prototype.get expression):
1754         (WebInspector.Probe.prototype.set expression):
1755         (WebInspector.Probe.prototype.get samples):
1756         (WebInspector.Probe.prototype.clearSamples):
1757         (WebInspector.Probe.prototype.addSample):
1758         * UserInterface/ProbeManager.js: Added.
1759         (WebInspector.ProbeManager):
1760         (WebInspector.ProbeManager.prototype.probeSetForBreakpoint):
1761         (WebInspector.ProbeManager.prototype._breakpointRemoved):
1762         (WebInspector.ProbeManager.prototype._breakpointActionsChanged.get var):
1763         (WebInspector.ProbeManager.prototype._breakpointActionsChanged.set get knownProbeIdentifiers):
1764         (WebInspector.ProbeManager.prototype._breakpointActionsChanged):
1765         * UserInterface/ProbeSet.js: Added.
1766         (WebInspector.ProbeSet):
1767         (WebInspector.ProbeSet.prototype.get breakpoint):
1768         (WebInspector.ProbeSet.prototype.get probes):
1769         (WebInspector.ProbeSet.prototype.get dataTable):
1770         (WebInspector.ProbeSet.prototype.clear):
1771         (WebInspector.ProbeSet.prototype.clearSamples):
1772         (WebInspector.ProbeSet.prototype.createProbe):
1773         (WebInspector.ProbeSet.prototype.removeProbe):
1774         (WebInspector.ProbeSet.prototype.willRemove):
1775         (WebInspector.ProbeSet.prototype._mainResourceChanged):
1776         (WebInspector.ProbeSet.prototype._createDataTable):
1777         (WebInspector.ProbeSet.prototype._sampleCollected):
1778         (WebInspector.ProbeSet.prototype._breakpointResolvedStateDidChange):
1779         * UserInterface/ProbeSetDataFrame.js: Added.
1780         (WebInspector.ProbeSetDataFrame):
1781         (WebInspector.ProbeSetDataFrame.compare):
1782         (WebInspector.ProbeSetDataFrame.prototype.get key):
1783         (WebInspector.ProbeSetDataFrame.prototype.get count):
1784         (WebInspector.ProbeSetDataFrame.prototype.get index):
1785         (WebInspector.ProbeSetDataFrame.prototype.get isSeparator):
1786         (WebInspector.ProbeSetDataFrame.prototype.set isSeparator):
1787         (WebInspector.ProbeSetDataFrame.prototype.addSampleForProbe):
1788         (WebInspector.ProbeSetDataFrame.prototype.missingKeys):
1789         (WebInspector.ProbeSetDataFrame.prototype.isComplete):
1790         (WebInspector.ProbeSetDataFrame.prototype.fillMissingValues):
1791         * UserInterface/ProbeSetDataTable.js: Added.
1792         (WebInspector.ProbeSetDataTable):
1793         (WebInspector.ProbeSetDataTable.prototype.get frames):
1794         (WebInspector.ProbeSetDataTable.prototype.get separators):
1795         (WebInspector.ProbeSetDataTable.prototype.willRemove):
1796         (WebInspector.ProbeSetDataTable.prototype.mainResourceChanged):
1797         (WebInspector.ProbeSetDataTable.prototype.addSampleForProbe):
1798         (WebInspector.ProbeSetDataTable.prototype.addProbe):
1799         (WebInspector.ProbeSetDataTable.prototype.removeProbe):
1800         (WebInspector.ProbeSetDataTable.prototype.createFrame):
1801         (WebInspector.ProbeSetDataTable.prototype.addFrame):
1802         (WebInspector.ProbeSetDataTable.prototype.addSeparator):
1803
1804 2014-02-05  Zan Dobersek  <zdobersek@igalia.com>
1805
1806         [GTK] Avoid no-op regenerations of GResourceBundle.xml, GResourceBundle.c
1807         https://bugs.webkit.org/show_bug.cgi?id=128192
1808
1809         Reviewed by Carlos Garcia Campos.
1810
1811         When doing incremental builds, GResourceBundle.xml and GResourceBundle.c can be
1812         generated when the dependencies are newer than the products, but the generation
1813         doesn't necessarily produce a new or different product. This results in constant
1814         regenerations for these two build targets. Touch the products at the end of
1815         generation to avoid this looping.
1816
1817         * GNUmakefile.am:
1818
1819 2014-01-30  Timothy Hatcher  <timothy@apple.com>
1820
1821         Show profile data in the discrete Scripts timeline view.
1822
1823         https://bugs.webkit.org/show_bug.cgi?id=127900
1824
1825         Reviewed by Joseph Pecoraro.
1826
1827         * Localizations/en.lproj/localizedStrings.js:
1828         * UserInterface/DataGrid.js:
1829         (WebInspector.DataGridNode.prototype.refreshIfNeeded):
1830         (WebInspector.DataGridNode.prototype.needsRefresh):
1831         (WebInspector.DataGridNode.prototype.set data):
1832         (WebInspector.DataGridNode.prototype.set revealed):
1833         (WebInspector.DataGridNode.prototype.refresh):
1834         * UserInterface/LayoutTimelineDataGrid.js:
1835         (WebInspector.LayoutTimelineDataGrid):
1836         * UserInterface/LayoutTimelineDataGridNode.js:
1837         (WebInspector.LayoutTimelineDataGridNode.prototype.createCellContent):
1838         * UserInterface/Main.html:
1839         * UserInterface/NavigationSidebarPanel.js:
1840         (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
1841         (WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
1842         (WebInspector.NavigationSidebarPanel.prototype._generateStyleRulesIfNeeded):
1843         * UserInterface/ProfileNodeDataGridNode.js: Added.
1844         (WebInspector.ProfileNodeDataGridNode):
1845         (WebInspector.ProfileNodeDataGridNode.prototype.get profileNode):
1846         (WebInspector.ProfileNodeDataGridNode.prototype.get records):
1847         (WebInspector.ProfileNodeDataGridNode.prototype.get baseStartTime):
1848         (WebInspector.ProfileNodeDataGridNode.prototype.get rangeStartTime):
1849         (WebInspector.ProfileNodeDataGridNode.prototype.set rangeStartTime):
1850         (WebInspector.ProfileNodeDataGridNode.prototype.get rangeEndTime):
1851         (WebInspector.ProfileNodeDataGridNode.prototype.set rangeEndTime):
1852         (WebInspector.ProfileNodeDataGridNode.prototype.get data):
1853         (WebInspector.ProfileNodeDataGridNode.prototype.refresh):
1854         (WebInspector.ProfileNodeDataGridNode.prototype.createCellContent):
1855         * UserInterface/ProfileNodeTreeElement.js: Added.
1856         (WebInspector.ProfileNodeTreeElement):
1857         (WebInspector.ProfileNodeTreeElement.prototype.get profileNode):
1858         (WebInspector.ProfileNodeTreeElement.prototype.get filterableData):
1859         (WebInspector.ProfileNodeTreeElement.prototype.onattach):
1860         (WebInspector.ProfileNodeTreeElement.prototype.onpopulate):
1861         * UserInterface/ResourceTimelineDataGridNode.js:
1862         (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
1863         * UserInterface/ScriptTimelineDataGrid.js:
1864         (WebInspector.ScriptTimelineDataGrid):
1865         * UserInterface/ScriptTimelineDataGridNode.js:
1866         (WebInspector.ScriptTimelineDataGridNode):
1867         (WebInspector.ScriptTimelineDataGridNode.prototype.get baseStartTime):
1868         (WebInspector.ScriptTimelineDataGridNode.prototype.get rangeStartTime):
1869         (WebInspector.ScriptTimelineDataGridNode.prototype.set rangeStartTime):
1870         (WebInspector.ScriptTimelineDataGridNode.prototype.get rangeEndTime):
1871         (WebInspector.ScriptTimelineDataGridNode.prototype.set rangeEndTime):
1872         (WebInspector.ScriptTimelineDataGridNode.prototype.get data):
1873         (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent):
1874         * UserInterface/ScriptTimelineRecord.js:
1875         (WebInspector.ScriptTimelineRecord):
1876         (WebInspector.ScriptTimelineRecord.prototype.get profile):
1877         * UserInterface/ScriptTimelineView.js:
1878         (WebInspector.ScriptTimelineView.prototype.updateLayout):
1879         (WebInspector.ScriptTimelineView.prototype.get selectionPathComponents):
1880         (WebInspector.ScriptTimelineView.prototype.dataGridNodeForTreeElement):
1881         (WebInspector.ScriptTimelineView.prototype.populateProfileNodeTreeElement):
1882         (WebInspector.ScriptTimelineView.prototype._processPendingRecords):
1883         (WebInspector.ScriptTimelineView.prototype._treeElementSelected):
1884         * UserInterface/TimelineContentView.js:
1885         (WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters):
1886         * UserInterface/TimelineDataGrid.js:
1887         (WebInspector.TimelineDataGrid):
1888         (WebInspector.TimelineDataGrid.prototype.addRowInSortOrder):
1889         (WebInspector.TimelineDataGrid.prototype._sort):
1890         * UserInterface/TimelineDataGridNode.js:
1891         (WebInspector.TimelineDataGridNode):
1892         (WebInspector.TimelineDataGridNode.prototype.collapse):
1893         (WebInspector.TimelineDataGridNode.prototype.expand):
1894         * UserInterface/TimelineRecord.js:
1895         * UserInterface/TreeOutlineDataGridSynchronizer.js:
1896         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.get delegate):
1897         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.dataGridNodeForTreeElement):
1898         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementAdded):
1899
1900 2014-01-30  Timothy Hatcher  <timothy@apple.com>
1901
1902         Add the model objects for the new Web Inspector profile data.
1903
1904         https://bugs.webkit.org/show_bug.cgi?id=127899
1905
1906         Reviewed by Joseph Pecoraro.
1907
1908         * UserInterface/Main.html:
1909         * UserInterface/Profile.js: Added.
1910         (WebInspector.Profile):
1911         (WebInspector.Profile.prototype.get idleTime):
1912         (WebInspector.Profile.prototype.get topDownRootNodes):
1913         (WebInspector.Profile.prototype.get bottomUpRootNodes):
1914         * UserInterface/ProfileNode.js: Added.
1915         (WebInspector.ProfileNode):
1916         (WebInspector.ProfileNode.prototype.get id):
1917         (WebInspector.ProfileNode.prototype.get type):
1918         (WebInspector.ProfileNode.prototype.get functionName):
1919         (WebInspector.ProfileNode.prototype.get sourceCodeLocation):
1920         (WebInspector.ProfileNode.prototype.get startTime):
1921         (WebInspector.ProfileNode.prototype.get endTime):
1922         (WebInspector.ProfileNode.prototype.get selfTime):
1923         (WebInspector.ProfileNode.prototype.get totalTime):
1924         (WebInspector.ProfileNode.prototype.get calls):
1925         (WebInspector.ProfileNode.prototype.get previousSibling):
1926         (WebInspector.ProfileNode.prototype.get nextSibling):
1927         (WebInspector.ProfileNode.prototype.get parentNode):
1928         (WebInspector.ProfileNode.prototype.get childNodes):
1929         (WebInspector.ProfileNode.prototype.totalTimeInRange):
1930         (WebInspector.ProfileNode.prototype.computeCallInfoForTimeRange):
1931         (WebInspector.ProfileNode.prototype.traverseNextProfileNode):
1932         (WebInspector.ProfileNode.prototype.saveIdentityToCookie):
1933         (WebInspector.ProfileNode.prototype.establishRelationships):
1934         * UserInterface/ProfileNodeCall.js: Added.
1935         (WebInspector.ProfileNodeCall):
1936         (WebInspector.ProfileNodeCall.prototype.get startTime):
1937         (WebInspector.ProfileNodeCall.prototype.get totalTime):
1938         (WebInspector.ProfileNodeCall.prototype.get endTime):
1939         (WebInspector.ProfileNodeCall.prototype.establishRelationships):
1940         * UserInterface/TimelineManager.js:
1941         (WebInspector.TimelineManager.prototype.eventRecorded.processRecord):
1942         (WebInspector.TimelineManager.prototype.eventRecorded):
1943         (WebInspector.TimelineManager.prototype._profileFromPayload.profileNodeFromPayload):
1944         (WebInspector.TimelineManager.prototype._profileFromPayload.profileNodeCallFromPayload):
1945         (WebInspector.TimelineManager.prototype._profileFromPayload):
1946
1947 2014-01-26  Timothy Hatcher  <timothy@apple.com>
1948
1949         Prefix existing Web Inspector profiler classes with "Legacy".
1950
1951         Remove a dependency on ProfileView for showTimeAsPercent and selection as a drive-by.
1952         Also remove the unfinished Canvas profiler classes, they will need redone for the Timeline view.
1953
1954         https://bugs.webkit.org/show_bug.cgi?id=127655
1955
1956         Reviewed by Joseph Pecoraro.
1957
1958         * UserInterface/CanvasDataGridNode.js: Removed.
1959         * UserInterface/CanvasObserver.js: Removed.
1960         * UserInterface/CanvasProfileObject.js: Removed.
1961         * UserInterface/CanvasProfileType.js: Removed.
1962         * UserInterface/CanvasProfileView.js: Removed.
1963         * UserInterface/ConsoleObserver.js:
1964         (WebInspector.ConsoleObserver.prototype.messageAdded):
1965         * UserInterface/ContentView.js:
1966         (WebInspector.ContentView):
1967         (WebInspector.ContentView.isViewable):
1968         * UserInterface/InspectorFrontendAPI.js:
1969         (InspectorFrontendAPI.isProfilingJavaScript):
1970         (InspectorFrontendAPI.startProfilingJavaScript):
1971         (InspectorFrontendAPI.stopProfilingJavaScript):
1972         * UserInterface/LegacyBottomUpProfileDataGridTree.js: Renamed from Source/WebInspectorUI/UserInterface/BottomUpProfileDataGridTree.js.
1973         * UserInterface/LegacyJavaScriptProfileObject.js: Renamed from Source/WebInspectorUI/UserInterface/JavaScriptProfileObject.js.
1974         * UserInterface/LegacyJavaScriptProfileType.js: Renamed from Source/WebInspectorUI/UserInterface/JavaScriptProfileType.js.
1975         * UserInterface/LegacyJavaScriptProfileView.css: Renamed from Source/WebInspectorUI/UserInterface/JavaScriptProfileView.css.
1976         * UserInterface/LegacyJavaScriptProfileView.js: Renamed from Source/WebInspectorUI/UserInterface/JavaScriptProfileView.js.
1977         * UserInterface/LegacyProfileDataGridTree.js: Renamed from Source/WebInspectorUI/UserInterface/ProfileDataGridTree.js.
1978         * UserInterface/LegacyProfileManager.js: Renamed from Source/WebInspectorUI/UserInterface/ProfileManager.js.
1979         * UserInterface/LegacyProfileObject.js: Renamed from Source/WebInspectorUI/UserInterface/ProfileObject.js.
1980         * UserInterface/LegacyProfileType.js: Renamed from Source/WebInspectorUI/UserInterface/ProfileType.js.
1981         * UserInterface/LegacyProfileView.css: Renamed from Source/WebInspectorUI/UserInterface/ProfileView.css.
1982         * UserInterface/LegacyProfileView.js: Renamed from Source/WebInspectorUI/UserInterface/ProfileView.js.
1983         * UserInterface/LegacyProfilerObserver.js: Renamed from Source/WebInspectorUI/UserInterface/ProfilerObserver.js.
1984         * UserInterface/LegacyTopDownProfileDataGridTree.js: Renamed from Source/WebInspectorUI/UserInterface/TopDownProfileDataGridTree.js.
1985         * UserInterface/Main.html:
1986         * UserInterface/Main.js:
1987         (WebInspector.loaded):
1988         (WebInspector.openURL):
1989
1990 2014-01-30  Diego Pino Garcia  <dpino@igalia.com>
1991
1992         Web Inspector: [REGRESSION(r163086)] Missing localized string 'Hide console (%s)'
1993         https://bugs.webkit.org/show_bug.cgi?id=127951
1994
1995         Reviewed by Timothy Hatcher.
1996
1997         * Localizations/en.lproj/localizedStrings.js:
1998         Add 'Hide console (%s)'.
1999
2000 2014-01-30  Diego Pino Garcia  <dpino@igalia.com>
2001
2002         Web Inspector: Implement open/close Console window shortcut
2003         https://bugs.webkit.org/show_bug.cgi?id=127896
2004
2005         Reviewed by Timothy Hatcher.
2006
2007         * UserInterface/KeyboardShortcut.js:
2008         (WebInspector.KeyboardShortcut.prototype.get displayName):
2009         Bug: Option symbol should be displayed as Alternative symbol (\u2387)
2010         in non Mac platforms.
2011         * UserInterface/Main.js:
2012         (WebInspector.contentLoaded):
2013         Create keyboard shortcut for toggling console window.
2014
2015 2014-01-29  Joseph Pecoraro  <pecoraro@apple.com>
2016
2017         Web Inspector: Play Breakpoint Sound in Frontend
2018         https://bugs.webkit.org/show_bug.cgi?id=127885
2019
2020         Reviewed by Timothy Hatcher.
2021
2022         Beep in the frontend when a "sound" breakpoint action is triggered.
2023
2024         * UserInterface/DebuggerManager.js:
2025         (WebInspector.DebuggerManager.prototype.playBreakpointActionSound):
2026         * UserInterface/DebuggerObserver.js:
2027         (WebInspector.DebuggerObserver.prototype.resumed):
2028         (WebInspector.DebuggerObserver.prototype.playBreakpointActionSound):
2029         * UserInterface/InspectorJSBackendCommands.js:
2030
2031 2014-01-29  Diego Pino Garcia  <dpino@igalia.com>
2032
2033         Web Inspector: [REGRESSION(r162931)] Tab navigation broken in DataGrid
2034         https://bugs.webkit.org/show_bug.cgi?id=127816
2035
2036         Reviewed by Timothy Hatcher.
2037
2038         * UserInterface/DataGrid.js:
2039         (WebInspector.DataGrid.prototype.moveToNextIfNeeded):
2040         (WebInspector.DataGrid.prototype._editingCommitted):
2041         Change columnIdentifier values 0 and 1 to strings "0" and "1".
2042
2043 2014-01-28  Joseph Pecoraro  <pecoraro@apple.com>
2044
2045         Unreviewed follow-up to r162965. Better coding style.
2046
2047         Timothy Hatcher pointed out a clearer style for classes
2048         on the <body> is to specify body.class. I agree.
2049
2050         * UserInterface/DashboardView.css:
2051         (body.javascript .toolbar .dashboard):
2052         (body.web .toolbar.collapsed .dashboard > .logs):
2053         (body.javascript .toolbar .dashboard > .resourcesCount):
2054
2055 2014-01-28  Joseph Pecoraro  <pecoraro@apple.com>
2056
2057         Web Inspector: Tweak UI when debugging a JSContext
2058         https://bugs.webkit.org/show_bug.cgi?id=127799
2059
2060         Reviewed by Timothy Hatcher.
2061
2062         * UserInterface/DashboardView.css:
2063         (.toolbar.javascript .dashboard):
2064         (.toolbar.web.collapsed .dashboard > .logs):
2065         (.toolbar.javascript .dashboard > .resourcesCount):
2066         Adjust collapsed dashboard in web and javascript debugging modes.
2067         JavaScript debugging mode is always treated as collapsed.
2068
2069         * UserInterface/Main.js:
2070         (WebInspector.contentLoaded):
2071         Adjust what is created and shown when in javascript debugging mode.
2072
2073         * UserInterface/NavigationSidebarPanel.css:
2074         (.navigation-sidebar-panel-content-tree-outline.hide-disclosure-buttons .item.small):
2075         * UserInterface/ResourceSidebarPanel.js:
2076         (WebInspector.ResourceSidebarPanel):
2077         (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
2078         * UserInterface/TimelineSidebarPanel.css:
2079         (.sidebar > .panel.timeline > .status-bar):
2080         (.sidebar > .panel.timeline > .title-bar):
2081         When javascript debugging expect to put things at the root level, so hide
2082         disclosure buttons and adjust the style so resources look nice here.
2083
2084 2014-01-28  Diego Pino Garcia  <dpino@igalia.com>
2085
2086         Web Inspector: In a DataGrid, store value of columnIdentifier to DOM node representing a cell
2087         https://bugs.webkit.org/show_bug.cgi?id=127613
2088
2089         Reviewed by Timothy Hatcher.
2090
2091         * UserInterface/DOMStorageContentView.js:
2092         (WebInspector.DOMStorageContentView.prototype._editingCallback):
2093         * UserInterface/DataGrid.js:
2094         (WebInspector.DataGrid):
2095         (WebInspector.DataGrid.prototype._keyDown):
2096         (WebInspector.DataGrid.prototype._contextMenuInDataTable):
2097         (WebInspector.DataGridNode.prototype.createCell):
2098
2099 2014-01-27  Joseph Pecoraro  <pecoraro@apple.com>
2100
2101         Web Inspector: Feature Check all Protocol Generated Interfaces to get JSContext Inspection working
2102         https://bugs.webkit.org/show_bug.cgi?id=127712
2103
2104         Reviewed by Timothy Hatcher.
2105
2106         Feature check protocol generated interfaces (e.g. FooAgent and registerFooObserver).
2107         Also drive by handle a possible exception if a SourceCode's URL is null, which is possible.
2108
2109         * UserInterface/ApplicationCacheManager.js:
2110         (WebInspector.ApplicationCacheManager):
2111         (WebInspector.ApplicationCacheManager.prototype.initialize):
2112         * UserInterface/CSSCompletions.js:
2113         (WebInspector.CSSCompletions.requestCSSNameCompletions):
2114         * UserInterface/CSSStyleManager.js:
2115         (WebInspector.CSSStyleManager):
2116         (WebInspector.CSSStyleManager.prototype.canForcePseudoClasses):
2117         * UserInterface/DebuggerManager.js:
2118         * UserInterface/FrameResourceManager.js:
2119         (WebInspector.FrameResourceManager):
2120         (WebInspector.FrameResourceManager.prototype.initialize):
2121         * UserInterface/Main.js:
2122         (WebInspector.loaded):
2123         * UserInterface/ProfileManager.js:
2124         (WebInspector.ProfileManager):
2125         * UserInterface/StorageManager.js:
2126         (WebInspector.StorageManager):
2127         Type check generated interfaces.
2128
2129         (WebInspector.DebuggerManager):
2130         (WebInspector.DebuggerManager.prototype.debuggerDidPause):
2131         Null check a SourceCode URL, which can be null for a Script with no URL.
2132
2133 2014-01-25  Timothy Hatcher  <timothy@apple.com>
2134
2135         Remove dead code from the JSC profiler.
2136
2137         https://bugs.webkit.org/show_bug.cgi?id=127643
2138
2139         Reviewed by Mark Lam.
2140
2141         * Versions/Inspector-iOS-7.0.json: Remove visible from CPUProfileNode.
2142
2143 2014-01-25  Joseph Pecoraro  <pecoraro@apple.com>
2144
2145         Remove FIXME in CSSKeywordCompletions.js about "inherit" keyword
2146         https://bugs.webkit.org/show_bug.cgi?id=127638
2147
2148         Reviewed by Timothy Hatcher.
2149
2150         * UserInterface/CSSKeywordCompletions.js:
2151         (WebInspector.CSSKeywordCompletions.forProperty):
2152         Replace FIXME with a descriptive comment about why the code is what it is.
2153
2154 2014-01-25  Diego Pino Garcia  <dpino@igalia.com>
2155
2156         Web Inspector: Position the completion suggestions popup below if there is room
2157         https://bugs.webkit.org/show_bug.cgi?id=127615
2158
2159         Reviewed by Joseph Pecoraro.
2160
2161         * UserInterface/CompletionSuggestionsView.js:
2162         (WebInspector.CompletionSuggestionsView.prototype.show):
2163
2164 2014-01-23  Timothy Hatcher  <timothy@apple.com>
2165
2166         Refactor TimelineRecordBar combining logic into a helper function.
2167
2168         https://bugs.webkit.org/show_bug.cgi?id=127530
2169
2170         Reviewed by Joseph Pecoraro.
2171
2172         * UserInterface/LayoutTimelineOverviewGraph.js:
2173         (WebInspector.LayoutTimelineOverviewGraph.prototype.updateLayout.createBar):
2174         (WebInspector.LayoutTimelineOverviewGraph.prototype.updateLayout):
2175         Use TimelineRecordBar.createCombinedBars.
2176
2177         * UserInterface/NetworkTimelineOverviewGraph.css:
2178         (.timeline-overview-graph.network):
2179         (.timeline-overview-graph.network > .graph-row > .timeline-record-bar):
2180         Cleaned up since we are using TimelineRecordBar.
2181
2182         * UserInterface/NetworkTimelineOverviewGraph.js:
2183         (WebInspector.NetworkTimelineOverviewGraph.prototype.reset):
2184         (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout.createBar):
2185         (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout):
2186         Use TimelineRecordBar.createCombinedBars.
2187
2188         * UserInterface/ScriptTimelineOverviewGraph.js:
2189         (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout.createBar):
2190         (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout):
2191         Use TimelineRecordBar.createCombinedBars.
2192
2193         * UserInterface/TimelineDataGridNode.js:
2194         (WebInspector.TimelineDataGridNode.prototype.refreshGraph.createBar):
2195         (WebInspector.TimelineDataGridNode.prototype.refreshGraph):
2196         Use TimelineRecordBar.createCombinedBars.
2197
2198         * UserInterface/TimelineRecordBar.css:
2199         (.timeline-record-bar.unfinished > .segment):
2200         (.timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
2201         (:focus .selected .timeline-record-bar > .segment.inactive):
2202         Improved selected appearance and don't assume .segment.inactive exists.
2203
2204         * UserInterface/TimelineRecordBar.js:
2205         (WebInspector.TimelineRecordBar):
2206         (WebInspector.TimelineRecordBar.createCombinedBars.compareByActiveStartTime): Added.
2207         (WebInspector.TimelineRecordBar.createCombinedBars): Added.
2208         (WebInspector.TimelineRecordBar.prototype.get renderMode): Added.
2209         (WebInspector.TimelineRecordBar.prototype.set renderMode): Added.
2210         (WebInspector.TimelineRecordBar.prototype.set records):
2211         (WebInspector.TimelineRecordBar.prototype.refresh):
2212         Lazily create DOM elements. Support rendering one or both segments. Doing this lets
2213         combined inactive segments sit behind multiple active segments.
2214
2215 2014-01-22  Timothy Hatcher  <timothy@apple.com>
2216
2217         Improve collapsing of TimelineDataGridNode graphs up to ancestors.
2218
2219         https://bugs.webkit.org/show_bug.cgi?id=127440
2220
2221         Reviewed by Joseph Pecoraro.
2222
2223         * UserInterface/TimelineDataGridNode.js:
2224         (WebInspector.TimelineDataGridNode.prototype.collapse):
2225         (WebInspector.TimelineDataGridNode.prototype.createCellContent):
2226         (WebInspector.TimelineDataGridNode.prototype.refresh):
2227         (WebInspector.TimelineDataGridNode.prototype.needsGraphRefresh):
2228         Notify the next visible ancestor it needs to refresh. Use needsGraphRefresh so ancestors
2229         are notified instead of directly calling refreshGraph in some places.
2230
2231 2014-01-22  Timothy Hatcher  <timothy@apple.com>
2232
2233         Don't include a hidden Timeline selection in the navigation path components.
2234
2235         https://bugs.webkit.org/show_bug.cgi?id=127443
2236
2237         Reviewed by Joseph Pecoraro.
2238
2239         * UserInterface/GeneralTreeElementPathComponent.js:
2240         (WebInspector.GeneralTreeElementPathComponent.prototype.get previousSibling):
2241         (WebInspector.GeneralTreeElementPathComponent.prototype.get nextSibling):
2242         Skip hidden siblings.
2243
2244         * UserInterface/OverviewTimelineView.js:
2245         (WebInspector.OverviewTimelineView.prototype.updateLayout):
2246         (WebInspector.OverviewTimelineView.prototype.get selectionPathComponents):
2247         Don't include hidden selection and dispatch SelectionPathComponentsDidChange event if hidden changes.
2248
2249         * UserInterface/TimelineContentView.js:
2250         (WebInspector.TimelineContentView.prototype._timeRangeSelectionChanged):
2251         Dispatch SelectionPathComponentsDidChange event if hidden changes on the selected tree element.
2252
2253         * UserInterface/TimelineView.js:
2254         (WebInspector.TimelineView.prototype.get selectionPathComponents):
2255         Don't include hidden selection.
2256
2257 2014-01-22  Timothy Hatcher  <timothy@apple.com>
2258
2259         Support collapsing call site records into the resource timeline.
2260
2261         Also fix some filtering and graph issues.
2262
2263         https://bugs.webkit.org/show_bug.cgi?id=127440
2264
2265         Reviewed by Joseph Pecoraro.
2266
2267         * UserInterface/NavigationSidebarPanel.js:
2268         (WebInspector.NavigationSidebarPanel.prototype.updateFilter):
2269         (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement.matchTextFilter):
2270         (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement.makeVisible):
2271         (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement):
2272         (WebInspector.NavigationSidebarPanel.prototype._updateFilter):
2273         Tweak how filtering happens so custom filters never expand to reveal and auto expanded
2274         tree elements will auto-collapse again later even with custom filters.
2275
2276         * UserInterface/OverviewTimelineView.css:
2277         (.timeline-view.overview > .data-grid tr.parent:not(.expanded) td.graph-column .timeline-record-bar:not(.timeline-record-type-network) > .segment):
2278         (.timeline-view.overview > .data-grid tr.parent:not(.expanded).selected td.graph-column .timeline-record-bar:not(.timeline-record-type-network) > .segment):
2279         (.timeline-view.overview > .data-grid:focus tr.parent:not(.expanded).selected td.graph-column .timeline-record-bar:not(.timeline-record-type-network) > .segment):
2280         Add a shadow to provide some negative space between juxtaposed records. Only needed when not expanded.
2281
2282         * UserInterface/OverviewTimelineView.js:
2283         (WebInspector.OverviewTimelineView.prototype.updateLayout):
2284         (WebInspector.OverviewTimelineView.prototype._addResourceToTreeIfNeeded):
2285         Update the filter when current time changes and only auto expand the main resource.
2286
2287         * UserInterface/ResourceTimelineDataGridNode.js:
2288         (WebInspector.ResourceTimelineDataGridNode):
2289         (WebInspector.ResourceTimelineDataGridNode.prototype._timelineRecordUpdated):
2290         Don't schedule a refresh of the graph if the record isn't visible.
2291
2292         * UserInterface/SourceCodeTimelineTimelineDataGridNode.js:
2293         (WebInspector.SourceCodeTimelineTimelineDataGridNode):
2294         (WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype._timelineRecordAdded):
2295         Don't schedule a refresh of the graph if the record isn't visible.
2296
2297         * UserInterface/TimelineContentView.js:
2298         (WebInspector.TimelineContentView.prototype._timeRangeSelectionChanged):
2299         Remove the boolean for updateFilter.
2300
2301         * UserInterface/TimelineDataGrid.js:
2302         (WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
2303         (WebInspector.TimelineDataGrid.prototype._sort):
2304         Keep the hidden state in-sync between node and element.
2305
2306         * UserInterface/TimelineDataGridNode.js:
2307         (WebInspector.TimelineDataGridNode.prototype.collapse):
2308         (WebInspector.TimelineDataGridNode.prototype.expand):
2309         (WebInspector.TimelineDataGridNode.prototype.appendChild):
2310         (WebInspector.TimelineDataGridNode.prototype.insertChild):
2311         (WebInspector.TimelineDataGridNode.prototype.removeChild):
2312         (WebInspector.TimelineDataGridNode.prototype.removeChildren):
2313         (WebInspector.TimelineDataGridNode.prototype.removeChildrenRecursive):
2314         (WebInspector.TimelineDataGridNode.prototype.refreshGraph.createBarsForRecords):
2315         (WebInspector.TimelineDataGridNode.prototype.refreshGraph.else.collectRecordsByType.get if):
2316         (WebInspector.TimelineDataGridNode.prototype.needsGraphRefresh):
2317         (WebInspector.TimelineDataGridNode.prototype.isRecordVisible):
2318         Support drawing the children records on the parent graph.
2319
2320         * UserInterface/TimelineRecordBar.css:
2321         (.timeline-record-bar.unfinished > .segment):
2322         (:focus .selected .timeline-record-bar > .segment):
2323         (:focus .selected .timeline-record-bar > .segment.inactive):
2324         (:focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
2325         Tweaked styles to look better when selected.
2326
2327         * UserInterface/TimelineRecordBar.js:
2328         (WebInspector.TimelineRecordBar.recordsCannotBeCombined):
2329         (WebInspector.TimelineRecordBar.prototype.set records):
2330         (WebInspector.TimelineRecordBar.prototype.refresh):
2331         Drive-by fixes for some bug with bars being reused.
2332
2333 2014-01-21  Timothy Hatcher  <timothy@apple.com>
2334
2335         Remember the Timeline Overview zoom and selection between sessions.
2336
2337         https://bugs.webkit.org/show_bug.cgi?id=127369
2338
2339         Reviewed by Joseph Pecoraro.
2340
2341         * UserInterface/TimelineOverview.js:
2342         (WebInspector.TimelineOverview):
2343         (WebInspector.TimelineOverview.prototype.set secondsPerPixel):
2344         (WebInspector.TimelineOverview.prototype._timeRangeSelectionChanged):
2345
2346 2014-01-21  Timothy Hatcher  <timothy@apple.com>
2347
2348         Show the Resource and Record selection path in the navigation bar for Timeline views.
2349
2350         https://bugs.webkit.org/show_bug.cgi?id=127367
2351
2352         Reviewed by Joseph Pecoraro.
2353
2354         * UserInterface/LayoutTimelineView.js:
2355         (WebInspector.LayoutTimelineView.prototype.treeElementPathComponentSelected):
2356         (WebInspector.LayoutTimelineView.prototype._dataGridNodeSelected):
2357         * UserInterface/NetworkTimelineView.js:
2358         (WebInspector.NetworkTimelineView.prototype.treeElementPathComponentSelected):
2359         (WebInspector.NetworkTimelineView.prototype._dataGridNodeSelected):
2360         * UserInterface/OverviewTimelineView.js:
2361         (WebInspector.OverviewTimelineView.prototype.get selectionPathComponents):
2362         (WebInspector.OverviewTimelineView.prototype.treeElementPathComponentSelected):
2363         (WebInspector.OverviewTimelineView.prototype._dataGridNodeSelected):
2364         * UserInterface/ScriptTimelineView.js:
2365         (WebInspector.ScriptTimelineView.prototype.treeElementPathComponentSelected):
2366         (WebInspector.ScriptTimelineView.prototype._dataGridNodeSelected):
2367         * UserInterface/TimelineContentView.js:
2368         (WebInspector.TimelineContentView.prototype._timelineViewSelectionPathComponentsDidChange):
2369         (WebInspector.TimelineContentView.prototype._showTimelineView):
2370         * UserInterface/TimelineDataGrid.js:
2371         (WebInspector.TimelineDataGrid.prototype.treeElementForDataGridNode):
2372         (WebInspector.TimelineDataGrid.prototype.dataGridNodeForTreeElement):
2373         * UserInterface/TimelineView.js:
2374         (WebInspector.TimelineView.prototype.get selectionPathComponents):
2375         (WebInspector.TimelineView.prototype.treeElementPathComponentSelected):
2376
2377 2014-01-20  Timothy Hatcher  <timothy@apple.com>
2378
2379         Add the recording button back to the Timelines sidebar.
2380
2381         https://bugs.webkit.org/show_bug.cgi?id=127314
2382
2383         Reviewed by Joseph Pecoraro.
2384
2385         * Localizations/en.lproj/localizedStrings.js: Updated.
2386
2387         * UserInterface/TimelineContentView.js:
2388         (WebInspector.TimelineContentView.prototype.get navigationItems):
2389         (WebInspector.TimelineContentView.prototype._update):
2390         (WebInspector.TimelineContentView.prototype._updateTimes):
2391         (WebInspector.TimelineContentView.prototype._startUpdatingCurrentTime):
2392         (WebInspector.TimelineContentView.prototype._recordingTimesUpdated):
2393         (WebInspector.TimelineContentView.prototype._clearTimeline):
2394         (WebInspector.TimelineContentView.prototype._recordingReset):
2395         Add a clear button and reset the time ruler and views when the recording resets.
2396
2397         * UserInterface/TimelineSidebarPanel.css:
2398         (.sidebar > .panel.timeline > .status-bar):
2399         (.sidebar > .panel.timeline > .status-bar > .record-glyph):
2400         (.sidebar > .panel.timeline > .status-bar > .record-glyph.recording):
2401         (.sidebar > .panel.timeline > .status-bar > .record-glyph:hover):
2402         (.sidebar > .panel.timeline > .status-bar > .record-glyph.recording:hover):
2403         (.sidebar > .panel.timeline > .status-bar > .record-glyph.forced):
2404         (.sidebar > .panel.timeline > .status-bar > .record-glyph.recording.forced):
2405         (.sidebar > .panel.timeline > .status-bar > .record-status):
2406         Add styles for the recording button and status message.
2407
2408         * UserInterface/TimelineSidebarPanel.js:
2409         (WebInspector.TimelineSidebarPanel.prototype._contentBrowserCurrentContentViewDidChange):
2410         (WebInspector.TimelineSidebarPanel.prototype._recordingStarted):
2411         (WebInspector.TimelineSidebarPanel.prototype._recordingStopped):
2412         (WebInspector.TimelineSidebarPanel.prototype._recordGlyphMousedOver):
2413         (WebInspector.TimelineSidebarPanel.prototype._recordGlyphMousedOut):
2414         (WebInspector.TimelineSidebarPanel.prototype._recordGlyphClicked):
2415         Add support for the recording button and status message.
2416
2417 2014-01-20  Timothy Hatcher  <timothy@apple.com>
2418
2419         Make the TimelineRecordTreeElement location subtitle live.
2420
2421         https://bugs.webkit.org/show_bug.cgi?id=127270
2422
2423         Reviewed by Joseph Pecoraro.
2424
2425         * Localizations/en.lproj/localizedStrings.js: Updated.
2426
2427         * UserInterface/SourceCodeLocation.js:
2428         (WebInspector.SourceCodeLocation.prototype.originalLocationString):
2429         (WebInspector.SourceCodeLocation.prototype.formattedLocationString):
2430         (WebInspector.SourceCodeLocation.prototype.displayLocationString):
2431         (WebInspector.SourceCodeLocation.prototype.updateDisplayString):
2432         (WebInspector.SourceCodeLocation.prototype._locationString):
2433         Support for a new nameStyle enum and a prefix for the location string.
2434         Passing the prefix here lets it be italicized with the line number.
2435         Support column number for SourceCode's without a URL too.
2436
2437         * UserInterface/TimelineRecordTreeElement.js:
2438         (WebInspector.TimelineRecordTreeElement):
2439         (WebInspector.TimelineRecordTreeElement.prototype.onattach):
2440         Create a subtitle span to update the location inside. Update the tooltip on attach.
2441
2442 2014-01-19  Timothy Hatcher  <timothy@apple.com>
2443
2444         Generate better display names for timer and event Timeline records.
2445
2446         Also support AnimationFrameRequested and AnimationFrameCanceled.
2447
2448         https://bugs.webkit.org/show_bug.cgi?id=127258
2449
2450         Reviewed by Joseph Pecoraro.
2451
2452         * Localizations/en.lproj/localizedStrings.js: Updated.
2453
2454         * UserInterface/LayoutTimelineRecord.js:
2455         (WebInspector.LayoutTimelineRecord.EventType.displayName):
2456         Generate past tense names that better match other names.
2457
2458         * UserInterface/ScriptTimelineDataGridNode.js:
2459         (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent):
2460         Pass the details to displayName.
2461
2462         * UserInterface/ScriptTimelineRecord.js:
2463         (WebInspector.ScriptTimelineRecord.EventType.displayName):
2464         Generate better names for timer and event records. Also add missing animation frame types.
2465
2466         * UserInterface/ScriptTimelineView.js:
2467         (WebInspector.ScriptTimelineView.prototype._processPendingRecords):
2468         Pass true to WebInspector.TimelineRecordTreeElement to include timer identifiers in the title.
2469
2470         * UserInterface/SourceCodeTimelineTreeElement.js:
2471         (WebInspector.SourceCodeTimelineTreeElement):
2472         Pass includeTimerIdentifierInMainTitle through to TimelineRecordTreeElement.
2473
2474         * UserInterface/TimelineManager.js:
2475         (WebInspector.TimelineManager.prototype.eventRecorded.processRecord):
2476         Include AnimationFrameRequested and AnimationFrameCanceled.
2477
2478         * UserInterface/TimelineRecordTreeElement.js:
2479         (WebInspector.TimelineRecordTreeElement):
2480         Use displayName functions instead and support includeTimerIdentifierInMainTitle.
2481
2482 2014-01-19  Timothy Hatcher  <timothy@apple.com>
2483
2484         Implement basic versions of the TimelineOverview graphs.
2485
2486         https://bugs.webkit.org/show_bug.cgi?id=127184
2487
2488         Reviewed by Joseph Pecoraro.
2489
2490         * UserInterface/LayoutTimelineOverviewGraph.css: Added.
2491         (.timeline-overview-graph.layout > .timeline-record-bar):
2492         (.timeline-overview-graph.layout > .timeline-record-bar > .segment):
2493
2494         * UserInterface/LayoutTimelineOverviewGraph.js: Added.
2495         (WebInspector.LayoutTimelineOverviewGraph.prototype.reset):
2496         (WebInspector.LayoutTimelineOverviewGraph.prototype.updateLayout):
2497         (WebInspector.LayoutTimelineOverviewGraph.prototype._layoutTimelineRecordAdded):
2498
2499         * UserInterface/Main.html: Added new files.
2500
2501         * UserInterface/NetworkTimelineOverviewGraph.css: Added.
2502         (.timeline-overview-graph.network):
2503         (.timeline-overview-graph.network > .graph-row):
2504         (.timeline-overview-graph.network > .graph-row > .bar):
2505         (.timeline-overview-graph.network > .graph-row > .bar.inactive):
2506         (.timeline-overview-graph.network > .graph-row > .bar.unfinished):
2507         (.timeline-overview-graph.network > .graph-row > .bar:not(.inactive)):
2508         (.timeline-overview-graph.network:nth-child(even) > .graph-row > .bar:not(.inactive)):
2509
2510         * UserInterface/NetworkTimelineOverviewGraph.js: Added.
2511         (WebInspector.NetworkTimelineOverviewGraph.prototype.reset):
2512         (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout.updateElementPosition):
2513         (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout.createBar):
2514         (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout):
2515         (WebInspector.NetworkTimelineOverviewGraph.prototype._networkTimelineRecordAdded.compareByStartTime):
2516         (WebInspector.NetworkTimelineOverviewGraph.prototype._networkTimelineRecordAdded.insertObjectIntoSortedArray):
2517         (WebInspector.NetworkTimelineOverviewGraph.prototype._networkTimelineRecordAdded):
2518
2519         * UserInterface/ScriptTimelineOverviewGraph.css: Added.
2520         (.timeline-overview-graph.script > .timeline-record-bar):
2521         (.timeline-overview-graph.script > .timeline-record-bar > .segment):
2522
2523         * UserInterface/ScriptTimelineOverviewGraph.js: Added.
2524         (WebInspector.ScriptTimelineOverviewGraph.prototype.reset):
2525         (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout):
2526         (WebInspector.ScriptTimelineOverviewGraph.prototype._scriptTimelineRecordAdded):
2527
2528         * UserInterface/TimelineContentView.js:
2529         (WebInspector.TimelineContentView.prototype._showTimelineView):
2530         (WebInspector.TimelineContentView.prototype._update):
2531         (WebInspector.TimelineContentView.prototype._recordingReset):
2532         Create and keep the graphs informed.
2533
2534         * UserInterface/TimelineDataGridNode.js:
2535         (WebInspector.TimelineDataGridNode):
2536         (WebInspector.TimelineDataGridNode.prototype.refreshGraph):
2537         Combine records that might overlap.
2538
2539         * UserInterface/TimelineOverview.css:
2540         (.timeline-overview > .graphs-container):
2541         (.timeline-overview > .graphs-container > .timeline-overview-graph):
2542         (.timeline-overview > .graphs-container > .timeline-overview-graph:nth-child(even)):
2543         (.timeline-overview > .graphs-container > .timeline-overview-graph:not(:first-child)):
2544         Add the graph rows with alternating stripe.
2545
2546         * UserInterface/TimelineOverview.js:
2547         (WebInspector.TimelineOverview):
2548         (WebInspector.TimelineOverview.prototype.set startTime):
2549         (WebInspector.TimelineOverview.prototype.get currentTime):
2550         (WebInspector.TimelineOverview.prototype.set currentTime):
2551         (WebInspector.TimelineOverview.prototype.updateLayout):
2552         (WebInspector.TimelineOverview.prototype.updateLayoutIfNeeded):
2553         Track currentTime in a member variable and let TimelineOverview manage the current time marker.
2554
2555         * UserInterface/TimelineOverviewGraph.js: Added.
2556         (WebInspector.TimelineOverviewGraph):
2557         (WebInspector.TimelineOverviewGraph.prototype.get zeroTime):
2558         (WebInspector.TimelineOverviewGraph.prototype.set zeroTime):
2559         (WebInspector.TimelineOverviewGraph.prototype.get startTime):
2560         (WebInspector.TimelineOverviewGraph.prototype.set startTime):
2561         (WebInspector.TimelineOverviewGraph.prototype.get endTime):
2562         (WebInspector.TimelineOverviewGraph.prototype.set endTime):
2563         (WebInspector.TimelineOverviewGraph.prototype.get currentTime):
2564         (WebInspector.TimelineOverviewGraph.prototype.set currentTime):
2565         (WebInspector.TimelineOverviewGraph.prototype.reset):
2566         (WebInspector.TimelineOverviewGraph.prototype.updateLayout):
2567         (WebInspector.TimelineOverviewGraph.prototype.updateLayoutIfNeeded):
2568         (WebInspector.TimelineOverviewGraph.prototype.needsLayout):
2569
2570         * UserInterface/TimelineRecordBar.css:
2571         (.timeline-record-bar > .segment):
2572         (.timeline-record-bar.unfinished > .segment):
2573         (.timeline-record-bar > .segment.inactive + .segment):
2574         (.timeline-record-bar.timeline-record-type-network > .segment.inactive):
2575
2576         * UserInterface/TimelineRecordBar.js:
2577         (WebInspector.TimelineRecordBar):
2578         (WebInspector.TimelineRecordBar.recordsCannotBeCombined):
2579         (WebInspector.TimelineRecordBar.prototype.get records):
2580         (WebInspector.TimelineRecordBar.prototype.set records):
2581         (WebInspector.TimelineRecordBar.prototype.refresh):
2582         Make TimelineRecordBar support multiple records.
2583
2584         * UserInterface/TimelineRuler.css:
2585         (.timeline-ruler > .markers):
2586         (.timeline-ruler > .selection-handle):
2587         (.timeline-ruler > .shaded-area):
2588         Add some z-index values to stay above graph elements.
2589
2590 2014-01-16  Timothy Hatcher  <timothy@apple.com>
2591
2592         Clean up Timelines code by using ES6 features and less global access of TimelineRecording.
2593         Also don't recreate Timeline objects when TimelineRecording is reset, reset them instead.
2594
2595         https://bugs.webkit.org/show_bug.cgi?id=127157
2596
2597         Reviewed by Joseph Pecoraro.
2598
2599         * UserInterface/LayoutTimelineView.js:
2600         (WebInspector.LayoutTimelineView.prototype.reset):
2601         * UserInterface/NetworkTimeline.js:
2602         (WebInspector.NetworkTimeline):
2603         (WebInspector.NetworkTimeline.prototype.reset):
2604         * UserInterface/NetworkTimelineView.js:
2605         (WebInspector.NetworkTimelineView.prototype.reset):
2606         * UserInterface/OverviewTimelineView.js:
2607         (WebInspector.OverviewTimelineView.prototype._networkTimelineRecordAdded):
2608         * UserInterface/ScriptTimelineView.js:
2609         (WebInspector.ScriptTimelineView.prototype.reset):
2610         * UserInterface/Timeline.js:
2611         (WebInspector.Timeline):
2612         (WebInspector.Timeline.prototype.reset):
2613         * UserInterface/TimelineContentView.js:
2614         (WebInspector.TimelineContentView.set createPathComponent):
2615         (WebInspector.TimelineContentView.set var):
2616         (WebInspector.TimelineContentView.prototype.showOverviewTimelineView):
2617         (WebInspector.TimelineContentView.prototype.showTimelineView):
2618         (WebInspector.TimelineContentView.prototype._showTimelineView):
2619         (WebInspector.TimelineContentView.prototype._update):
2620         (WebInspector.TimelineContentView.prototype._recordingReset):
2621         * UserInterface/TimelineRecording.js:
2622         (WebInspector.TimelineRecording.prototype.reset):
2623
2624 2014-01-16  Timothy Hatcher  <timothy@apple.com>
2625
2626         Improve WebInspector.TimelineOverview by not putting WebInspector.TimelineRuler in a scroll area.
2627
2628         https://bugs.webkit.org/show_bug.cgi?id=127145
2629
2630         Reviewed by Joseph Pecoraro.
2631
2632         * UserInterface/TimelineOverview.css:
2633         (.timeline-overview > .scroll-container):
2634         (.timeline-overview > .timeline-ruler):
2635         (.timeline-overview > .scroll-container > .scroll-width-sizer):
2636         * UserInterface/TimelineOverview.js:
2637         (WebInspector.TimelineOverview):
2638         (WebInspector.TimelineOverview.prototype.get startTime):
2639         (WebInspector.TimelineOverview.prototype.set startTime):
2640         (WebInspector.TimelineOverview.prototype.get secondsPerPixel):
2641         (WebInspector.TimelineOverview.prototype.set secondsPerPixel):
2642         (WebInspector.TimelineOverview.prototype.get scrollStartTime):
2643         (WebInspector.TimelineOverview.prototype.set scrollStartTime):
2644         (WebInspector.TimelineOverview.prototype.get visibleDuration):
2645         (WebInspector.TimelineOverview.prototype.revealMarker):
2646         (WebInspector.TimelineOverview.prototype.updateLayout):
2647         (WebInspector.TimelineOverview.prototype._handleScrollEvent):
2648         (WebInspector.TimelineOverview.prototype._handleWheelEvent):
2649         * UserInterface/TimelineRuler.js:
2650         (WebInspector.TimelineRuler.MinimumSelectionTimeRange): Reduce to 10ms now that super zoom has no performance impact.
2651
2652 2014-01-15  Timothy Hatcher  <timothy@apple.com>
2653
2654         Implement the discrete Script and Layout timeline views.
2655
2656         https://bugs.webkit.org/show_bug.cgi?id=127063
2657
2658         Reviewed by Joseph Pecoraro.
2659
2660         * Localizations/en.lproj/localizedStrings.js: Updated.
2661
2662         * UserInterface/DataGrid.js:
2663         (WebInspector.DataGrid): Support hidden columns by default.
2664         (WebInspector.DataGrid.prototype.updateLayout): Set the column width to zero for hidden columns.
2665
2666         * UserInterface/LayoutTimelineDataGrid.js:
2667         (WebInspector.LayoutTimelineDataGrid): Pass the right parameters to the superclass.
2668
2669         * UserInterface/LayoutTimelineRecord.js:
2670         (WebInspector.LayoutTimelineRecord.prototype.saveIdentityToCookie): Added.
2671
2672         * UserInterface/LayoutTimelineView.css: Copied from Source/WebInspectorUI/UserInterface/ScriptTimelineDataGrid.js.
2673         (.timeline-view.layout > .data-grid):
2674         (.timeline-view.layout > .data-grid .eventType-column):
2675         (.sidebar > .panel.timeline.timeline-content-view-showing .navigation-sidebar-panel-content-tree-outline.layout .item .subtitle):
2676
2677         * UserInterface/LayoutTimelineView.js: Added.
2678         (WebInspector.LayoutTimelineView):
2679         (WebInspector.LayoutTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
2680         (WebInspector.LayoutTimelineView.prototype.shown):
2681         (WebInspector.LayoutTimelineView.prototype.hidden):
2682         (WebInspector.LayoutTimelineView.prototype.updateLayout):
2683         (WebInspector.LayoutTimelineView.prototype.matchTreeElementAgainstCustomFilters):
2684         (WebInspector.LayoutTimelineView.prototype._layoutTimelineRecordAdded):
2685         (WebInspector.LayoutTimelineView.prototype._dataGridFiltersDidChange):
2686         (WebInspector.LayoutTimelineView.prototype._treeElementSelected):
2687
2688         * UserInterface/Main.html: Added new files.
2689
2690         * UserInterface/ScriptTimelineDataGrid.js:
2691         (WebInspector.ScriptTimelineDataGrid): Pass the right parameters to the superclass.
2692
2693         * UserInterface/ScriptTimelineDataGridNode.js:
2694         (WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent): Fix up how we create the link.
2695
2696         * UserInterface/ScriptTimelineRecord.js:
2697         (WebInspector.ScriptTimelineRecord.prototype.saveIdentityToCookie): Added.
2698
2699         * UserInterface/ScriptTimelineView.css: Copied from Source/WebInspectorUI/UserInterface/ScriptTimelineDataGrid.js.
2700         (.timeline-view.script > .data-grid):
2701         (.timeline-view.script > .data-grid .eventType-column):
2702         (.sidebar > .panel.timeline.timeline-content-view-showing .navigation-sidebar-panel-content-tree-outline.script .item .subtitle):
2703
2704         * UserInterface/ScriptTimelineView.js: Added.
2705         (WebInspector.ScriptTimelineView):
2706         (WebInspector.ScriptTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
2707         (WebInspector.ScriptTimelineView.prototype.shown):
2708         (WebInspector.ScriptTimelineView.prototype.hidden):
2709         (WebInspector.ScriptTimelineView.prototype.updateLayout):
2710         (WebInspector.ScriptTimelineView.prototype.matchTreeElementAgainstCustomFilters):
2711         (WebInspector.ScriptTimelineView.prototype._scriptTimelineRecordAdded):
2712         (WebInspector.ScriptTimelineView.prototype._dataGridFiltersDidChange):
2713         (WebInspector.ScriptTimelineView.prototype._treeElementSelected):
2714
2715         * UserInterface/SourceCodeTimelineTreeElement.js:
2716         (WebInspector.SourceCodeTimelineTreeElement):
2717         Moved code to TimelineRecordTreeElement. Subclass from it.
2718
2719         * UserInterface/TimelineContentView.js:
2720         (WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters): Support TimelineRecordTreeElement.
2721         (WebInspector.TimelineContentView.prototype._timeRangeSelectionChanged): Update zeroTime for all views.
2722
2723         * UserInterface/TimelineDataGrid.css:
2724         (.data-grid.timeline td .icon):
2725         (.data-grid.timeline td .go-to-arrow):
2726         (.data-grid.timeline tr:hover .go-to-arrow):
2727         (.data-grid.timeline td .subtitle):
2728         (.data-grid.timeline td .subtitle::before):
2729         (.data-grid.timeline:focus tr.selected td .subtitle):
2730
2731         * UserInterface/TimelineRecord.js:
2732         (WebInspector.TimelineRecord.prototype.saveIdentityToCookie): Added.
2733
2734         * UserInterface/TimelineRecordTreeElement.js: Added.
2735         (WebInspector.TimelineRecordTreeElement):
2736         (WebInspector.TimelineRecordTreeElement.prototype.get record):
2737         (WebInspector.TimelineRecordTreeElement.prototype.get filterableData):
2738         Factored out from SourceCodeTimelineTreeElement.
2739
2740         * UserInterface/TimelineSidebarPanel.js:
2741         (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.looslyCompareRepresentedObjects):
2742         (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject):
2743         Find TreeElements via a loose lookup based on represented objects that might contain the represented object we are
2744         really looking for.
2745
2746 2014-01-14  Timothy Hatcher  <timothy@apple.com>
2747
2748         Implement the discrete Network timeline view.
2749
2750         https://bugs.webkit.org/show_bug.cgi?id=127022
2751
2752         Reviewed by Joseph Pecoraro.
2753
2754         * UserInterface/DataGrid.js:
2755         (WebInspector.DataGrid): Align the labels of the column headers to match the data.
2756         (WebInspector.DataGridNode.prototype.get selectable): Prevent selection when hidden.
2757
2758         * UserInterface/DetailsSection.css:
2759         (.details-section > .header): Bump the font size to match data grid header sizes.
2760
2761         * UserInterface/Main.html: Add new files.
2762
2763         * UserInterface/NetworkTimelineView.css: Added.
2764         (.timeline-view.network > .data-grid):
2765         (.sidebar > .panel.timeline.timeline-content-view-showing > .content .item.resource .subtitle):
2766         Hide the domain subtitle when the content view is showing which also has the domain.
2767
2768         * UserInterface/NetworkTimelineView.js: Added.
2769         (WebInspector.NetworkTimelineView):
2770         (WebInspector.NetworkTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
2771         (WebInspector.NetworkTimelineView.prototype.shown):
2772         (WebInspector.NetworkTimelineView.prototype.hidden):
2773         (WebInspector.NetworkTimelineView.prototype.updateLayout):
2774         (WebInspector.NetworkTimelineView.prototype.matchTreeElementAgainstCustomFilters):
2775         (WebInspector.NetworkTimelineView.prototype._networkTimelineRecordAdded):
2776         (WebInspector.NetworkTimelineView.prototype._dataGridFiltersDidChange):
2777         (WebInspector.NetworkTimelineView.prototype._treeElementSelected):
2778
2779         * UserInterface/ResourceTimelineDataGridNode.js:
2780         (WebInspector.ResourceTimelineDataGridNode.prototype._needsRefresh):
2781         Call dataGridNodeNeedsRefresh on the TimelineDataGrid so things can be batched with
2782         one request animation frame.
2783
2784         * UserInterface/TimelineContentView.js:
2785         (WebInspector.TimelineContentView): Create a NetworkTimelineView.
2786         (WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters):
2787
2788         * UserInterface/TimelineDataGrid.css:
2789         (.data-grid.timeline table):
2790         (.data-grid.timeline th):
2791         (.data-grid.timeline th:not(:last-child)):
2792         (.data-grid.timeline th.sortable:active):
2793         (.data-grid.timeline th.sort-descending):
2794         (.data-grid.timeline .data-container):
2795         (.data-grid.timeline td):
2796         (.data-grid.timeline td:last-child):
2797         (.data-grid.timeline td:not(:last-child)):
2798         (.data-grid.timeline:focus tr.selected td:not(:last-child)):
2799         (.data-grid.timeline th.sort-descending > div:first-child):
2800         (.data-grid.timeline th.sort-descending > div:first-child::after):
2801         (.data-grid.timeline td.error):
2802         (.data-grid.timeline tr.selected td.error):
2803         (.data-grid.timeline > .navigation-bar-container):
2804         (.data-grid.timeline:hover > .navigation-bar-container):
2805         (.data-grid.timeline > .navigation-bar-container > .navigation-bar):
2806
2807         * UserInterface/TimelineDataGrid.js:
2808         (WebInspector.TimelineDataGrid):
2809         (WebInspector.TimelineDataGrid.createColumnScopeBar):
2810         (WebInspector.TimelineDataGrid.prototype.reset):
2811         (WebInspector.TimelineDataGrid.prototype.shown):
2812         (WebInspector.TimelineDataGrid.prototype.hidden):
2813         (WebInspector.TimelineDataGrid.prototype.callFramePopoverAnchorElement):
2814         (WebInspector.TimelineDataGrid.prototype.updateLayout):
2815         (WebInspector.TimelineDataGrid.prototype.treeElementMatchesActiveScopeFilters):
2816         (WebInspector.TimelineDataGrid.prototype.addRowInSortOrder):
2817         (WebInspector.TimelineDataGrid.prototype.shouldIgnoreSelectionEvent):
2818         (WebInspector.TimelineDataGrid.prototype.dataGridNodeNeedsRefresh):
2819         (WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
2820         (WebInspector.TimelineDataGrid.prototype._sort):
2821         (WebInspector.TimelineDataGrid.prototype._sortComparator):
2822         Add support for sorting, batch refresh and managing of a TreeOutlineDataGridSynchronizer.
2823
2824         * UserInterface/TimelineSidebarPanel.css:
2825         (.sidebar > .panel.timeline > .title-bar): Bump the font size to match data grid header sizes.
2826
2827         * UserInterface/TimelineView.js:
2828         (WebInspector.TimelineView.prototype.matchTreeElementAgainstCustomFilters): Added stub.
2829
2830         * UserInterface/TreeOutlineDataGridSynchronizer.js:
2831         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.get treeOutline):
2832         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.get dataGrid):
2833         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.get enabled):
2834         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.set enabled):
2835         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.treeElementForDataGridNode):
2836         (WebInspector.TreeOutlineDataGridSynchronizer.prototype.dataGridNodeForTreeElement):
2837         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeOutlineScrolled):
2838         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridScrolled):
2839         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeSelected):
2840         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeExpanded):
2841         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridNodeCollapsed):
2842         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementSelected):
2843         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementAdded):
2844         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementRemoved):
2845         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementExpanded):
2846         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementCollapsed):
2847         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeElementHiddenChanged):
2848         Added support for disabling the synchronizer when the client can do a better job.
2849
2850 2014-01-13  Timothy Hatcher  <timothy@apple.com>
2851
2852         Filter the Timeline overview graph and sidebar based on the current time selection.
2853
2854         https://bugs.webkit.org/show_bug.cgi?id=126955
2855
2856         Reviewed by Joseph Pecoraro.
2857
2858         * UserInterface/NavigationSidebarPanel.js:
2859         (WebInspector.NavigationSidebarPanel.prototype.updateFilter):
2860         (WebInspector.NavigationSidebarPanel.prototype.hasCustomFilters):
2861         (WebInspector.NavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
2862         (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement.matchTextFilter):
2863         (WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement):
2864         Add support for custom filters implemented by subclasses.
2865
2866         * UserInterface/TimelineContentView.js:
2867         (WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters.checkTimeBounds):
2868         (WebInspector.TimelineContentView.prototype.matchTreeElementAgainstCustomFilters):
2869         (WebInspector.TimelineContentView.prototype._timeRangeSelectionChanged):
2870         Filter known tree element types by time.
2871
2872         * UserInterface/TimelineSidebarPanel.css:
2873         (.sidebar > .panel.timeline > .empty-content-placeholder):
2874         Position the empty placeholder with the content.
2875
2876         * UserInterface/TimelineSidebarPanel.js:
2877         (WebInspector.TimelineSidebarPanel.prototype.hasCustomFilters):
2878         (WebInspector.TimelineSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
2879         Defer filtering to the TimelineContentView.
2880
2881 2014-01-13  Timothy Hatcher  <timothy@apple.com>
2882
2883         Implement state cookie support for WebInspector.TimelineSidebarPanel.
2884
2885         https://bugs.webkit.org/show_bug.cgi?id=126921
2886
2887         Reviewed by Joseph Pecoraro.
2888
2889         * UserInterface/DebuggerSidebarPanel.js:
2890         (WebInspector.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
2891         Drive-by fix to pass along relaxedMatchDelay to the superclass. 
2892
2893         * UserInterface/Main.js:
2894         (WebInspector.loaded):
2895         (WebInspector._provisionalLoadStarted):
2896         Listen for ProvisionalLoadStarted instead of ProvisionalLoadCommitted to save the cookie
2897         before the TimelineRecording is reset and clears the UI.
2898
2899         * UserInterface/NavigationSidebarPanel.js:
2900         (WebInspector.NavigationSidebarPanel.prototype.get restoringState): Added.
2901         (WebInspector.NavigationSidebarPanel.prototype.restoreStateFromCookie.finalAttemptToRestoreViewStateFromCookie):
2902         Delete _pendingViewStateCookie since this was the final attempt.
2903         (WebInspector.NavigationSidebarPanel.prototype.restoreStateFromCookie):
2904         (WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject): Block string represented objects.
2905         (WebInspector.NavigationSidebarPanel.prototype._checkElementsForPendingViewStateCookie):
2906
2907         * UserInterface/OverviewTimelineView.js:
2908         (WebInspector.OverviewTimelineView.prototype._treeElementSelected):
2909
2910         * UserInterface/ResourceSidebarPanel.js:
2911         (WebInspector.ResourceSidebarPanel.prototype.treeElementForRepresentedObject):
2912         Drive-by fix to null check parentFrame since it can be null. Was causing an exception while working on this.
2913
2914         * UserInterface/SourceCodeTimeline.js:
2915         (WebInspector.SourceCodeTimeline):
2916         (WebInspector.SourceCodeTimeline.prototype.saveIdentityToCookie):
2917
2918         * UserInterface/TimelineSidebarPanel.js:
2919         (WebInspector.TimelineSidebarPanel.prototype.canShowDifferentContentView):
2920         (WebInspector.TimelineSidebarPanel.prototype.saveStateToCookie):
2921         (WebInspector.TimelineSidebarPanel.prototype.restoreStateFromCookie):
2922
2923         * UserInterface/TreeOutline.js:
2924         (TreeOutline.prototype._forgetTreeElement):
2925         Drive-by fix to clear selectedTreeElement if it is removed from the tree. Was causing removed TreeElements to be
2926         saved as a cookie since it was still the selected item.
2927
2928 2014-01-11  Timothy Hatcher  <timothy@apple.com>
2929
2930         Implement bar graph rendering for WebInspector.OverviewTimelineView.
2931
2932         https://bugs.webkit.org/show_bug.cgi?id=126831
2933
2934         Reviewed by Joseph Pecoraro.
2935
2936         * UserInterface/Main.html: Added new files.
2937
2938         * UserInterface/OverviewTimelineView.css:
2939         (.timeline-view.overview > .data-grid td.graph-column):
2940         (.timeline-view.overview > .data-grid td.graph-column > div):
2941         (.timeline-view.overview > .data-grid td.graph-column .timeline-record-bar):
2942         Position the bars in the DataGrid cells.
2943
2944         * UserInterface/OverviewTimelineView.js:
2945         (WebInspector.OverviewTimelineView.prototype.updateLayout):
2946         (WebInspector.OverviewTimelineView.prototype._addResourceToTreeIfNeeded):
2947         (WebInspector.OverviewTimelineView.prototype._sourceCodeTimelineAdded):
2948         Create the proper DataGridNodes for resources and source code timelines.
2949
2950         * UserInterface/ResourceTimelineDataGridNode.js:
2951         (WebInspector.ResourceTimelineDataGridNode):
2952         (WebInspector.ResourceTimelineDataGridNode.prototype.get records):
2953         (WebInspector.ResourceTimelineDataGridNode.prototype.get resource):
2954         (WebInspector.ResourceTimelineDataGridNode.prototype.get data):
2955         (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
2956         (WebInspector.ResourceTimelineDataGridNode.prototype.refresh):
2957         (WebInspector.ResourceTimelineDataGridNode.prototype._needsRefresh):
2958         (WebInspector.ResourceTimelineDataGridNode.prototype._goToResource):
2959         Simplify by deferring the graph logic to the new TimelineDataGridNode base class.
2960
2961         * UserInterface/SourceCodeTimelineTimelineDataGridNode.js: Added.
2962         (WebInspector.SourceCodeTimelineTimelineDataGridNode):
2963         (WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype.get records):
2964         (WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype.get sourceCodeTimeline):
2965         (WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype.get data):
2966
2967         * UserInterface/TimelineDataGridNode.js: Added.
2968         (WebInspector.TimelineDataGridNode):
2969         (WebInspector.TimelineDataGridNode.prototype.get records):
2970         (WebInspector.TimelineDataGridNode.prototype.get data):
2971         (WebInspector.TimelineDataGridNode.prototype.createCellContent):
2972         (WebInspector.TimelineDataGridNode.prototype.refresh):
2973         (WebInspector.TimelineDataGridNode.prototype.refreshGraph):
2974         (WebInspector.TimelineDataGridNode.prototype.needsGraphRefresh):
2975         Handles the graph column and manages the records and their bars.
2976
2977         * UserInterface/TimelineRecordBar.css: Added.
2978         (.timeline-record-bar):
2979         (.timeline-record-bar > .segment):
2980         (.timeline-record-bar:not(.has-inactive-segment) > .segment):
2981         (.timeline-record-bar.unfinished > .segment):
2982         (.timeline-record-bar > .segment.inactive + .segment):
2983         (:focus .selected .timeline-record-bar > .segment):
2984         (.timeline-record-bar > .segment.inactive):
2985         (.timeline-record-bar.timeline-record-type-network > .segment):
2986         (.timeline-record-bar.timeline-record-type-layout > .segment):
2987         (.timeline-record-bar.timeline-record-type-script > .segment):
2988
2989         * UserInterface/TimelineRecordBar.js: Added.
2990         (WebInspector.TimelineRecordBar):
2991         (WebInspector.TimelineRecordBar.prototype.get element):
2992         (WebInspector.TimelineRecordBar.prototype.refresh):
2993         (WebInspector.TimelineRecordBar.prototype._updateElementPosition):
2994
2995 2014-01-08  Timothy Hatcher  <timothy@apple.com>
2996
2997         Update the current WebInspector.TimelineView when time range changes.
2998
2999         https://bugs.webkit.org/show_bug.cgi?id=126667
3000
3001         Reviewed by Joseph Pecoraro.
3002
3003         * UserInterface/TimelineContentView.js:
3004         (WebInspector.TimelineContentView.prototype._showTimelineView):
3005         (WebInspector.TimelineContentView.prototype._update):
3006         (WebInspector.TimelineContentView.prototype._startUpdatingCurrentTime):
3007         (WebInspector.TimelineContentView.prototype._stopUpdatingCurrentTime):
3008         (WebInspector.TimelineContentView.prototype._recordingStarted):
3009         (WebInspector.TimelineContentView.prototype._recordingStopped):
3010         (WebInspector.TimelineContentView.prototype._recordingReset):
3011         (WebInspector.TimelineContentView.prototype._timeRangeSelectionChanged):
3012         * UserInterface/TimelineOverview.js:
3013         (WebInspector.TimelineOverview):
3014         (WebInspector.TimelineOverview.prototype.updateLayout):
3015         (WebInspector.TimelineOverview.prototype.updateLayoutIfNeeded):
3016         (WebInspector.TimelineOverview.prototype._updateElementWidth):
3017         (WebInspector.TimelineOverview.prototype._handleWheelEvent):
3018         (WebInspector.TimelineOverview.prototype._timeRangeSelectionChanged):
3019         * UserInterface/TimelineRuler.js:
3020         (WebInspector.TimelineRuler.prototype.updateLayoutIfNeeded):
3021         * UserInterface/TimelineView.js:
3022         (WebInspector.TimelineView):
3023         (WebInspector.TimelineView.prototype.get zeroTime):
3024         (WebInspector.TimelineView.prototype.set zeroTime):
3025         (WebInspector.TimelineView.prototype.get startTime):
3026         (WebInspector.TimelineView.prototype.set startTime):
3027         (WebInspector.TimelineView.prototype.get endTime):
3028         (WebInspector.TimelineView.prototype.set endTime):
3029         (WebInspector.TimelineView.prototype.get currentTime):
3030         (WebInspector.TimelineView.prototype.set currentTime.checkIfLayoutIsNeeded):
3031         (WebInspector.TimelineView.prototype.set currentTime):
3032         (WebInspector.TimelineView.prototype.updateLayout):
3033         (WebInspector.TimelineView.prototype.updateLayoutIfNeeded):
3034         (WebInspector.TimelineView.prototype.needsLayout):
3035
3036 2013-12-19  Timothy Hatcher  <timothy@apple.com>
3037
3038         Implement time range selection for TimelineOverview and TimelineRuler.
3039
3040         https://bugs.webkit.org/show_bug.cgi?id=126035
3041
3042         Reviewed by Joseph Pecoraro.
3043
3044         * UserInterface/TimelineContentView.js:
3045         (WebInspector.TimelineContentView.prototype._update):
3046         (WebInspector.TimelineContentView.prototype._recordingReset):
3047         Properly update start time and the selection start time on reset.
3048
3049         * UserInterface/TimelineOverview.js:
3050         (WebInspector.TimelineOverview):
3051         (WebInspector.TimelineOverview.prototype.get selectionStartTime):
3052         (WebInspector.TimelineOverview.prototype.set selectionStartTime):
3053         (WebInspector.TimelineOverview.prototype.get selectionDuration):
3054         (WebInspector.TimelineOverview.prototype.set selectionDuration):
3055         Added selection getters and setters.
3056
3057         * UserInterface/TimelineRuler.css:
3058         (.timeline-ruler.allows-time-range-selection):
3059         (.timeline-ruler > *):
3060         (.timeline-ruler > .header):
3061         (.timeline-ruler > .selection-drag):
3062         (.timeline-ruler > .selection-drag:active):
3063         (.timeline-ruler > .selection-handle):
3064         (.timeline-ruler > .selection-handle.left):
3065         (.timeline-ruler > .selection-handle.right):
3066         (.timeline-ruler > .shaded-area):
3067         (.timeline-ruler > .shaded-area.left):
3068         (.timeline-ruler > .shaded-area.right):
3069         Added styles for the selection elements and tweaked pointer-events to allow
3070         events on elements we expect.
3071
3072         * UserInterface/TimelineRuler.js:
3073         (WebInspector.TimelineRuler):
3074         (WebInspector.TimelineRuler.prototype.get allowsTimeRangeSelection): Added.
3075         (WebInspector.TimelineRuler.prototype.set allowsTimeRangeSelection): Added.
3076         (WebInspector.TimelineRuler.prototype.get selectionStartTime): Added.
3077         (WebInspector.TimelineRuler.prototype.set selectionStartTime): Added.
3078         (WebInspector.TimelineRuler.prototype.get selectionEndTime): Added.
3079         (WebInspector.TimelineRuler.prototype.set selectionEndTime): Added.
3080         (WebInspector.TimelineRuler.prototype.updateLayout):
3081         (WebInspector.TimelineRuler.prototype._needsMarkerLayout.update):
3082         (WebInspector.TimelineRuler.prototype._needsMarkerLayout):
3083         (WebInspector.TimelineRuler.prototype._needsSelectionLayout.update):
3084         (WebInspector.TimelineRuler.prototype._needsSelectionLayout):
3085         (WebInspector.TimelineRuler.prototype._recalculate):
3086         (WebInspector.TimelineRuler.prototype._updatePositionOfElement):
3087         (WebInspector.TimelineRuler.prototype._updateMarkers):
3088         (WebInspector.TimelineRuler.prototype._updateSelection): Added.
3089         (WebInspector.TimelineRuler.prototype._dispatchTimeRangeSelectionChangedEvent):
3090         (WebInspector.TimelineRuler.prototype._timelineMarkerTimeChanged):
3091         (WebInspector.TimelineRuler.prototype._handleMouseDown): Added.
3092         (WebInspector.TimelineRuler.prototype._handleMouseMove): Added.
3093         (WebInspector.TimelineRuler.prototype._handleMouseUp): Added.
3094         (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseDown): Added.
3095         (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseMove): Added.
3096         (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseUp): Added.
3097         Create selection elements and handle mouse events for drag and move.
3098
3099 2013-12-17  Timothy Hatcher  <timothy@apple.com>
3100
3101         Support scroll to zoom in TimelineOverview.
3102
3103         https://bugs.webkit.org/show_bug.cgi?id=125909
3104
3105         Reviewed by Joseph Pecoraro.
3106
3107         * UserInterface/TimelineOverview.js:
3108         (WebInspector.TimelineOverview):
3109         (WebInspector.TimelineOverview.prototype._handleWheelEvent):
3110
3111 2013-12-17  Timothy Hatcher  <timothy@apple.com>
3112
3113         Add the start of the TimelineOverview class.
3114
3115         TimelineOverview currently has a time ruler and tracks the current recording time.
3116
3117         https://bugs.webkit.org/show_bug.cgi?id=125878
3118
3119         Reviewed by Joseph Pecoraro.
3120
3121         * UserInterface/Main.html:
3122         * UserInterface/TimelineContentView.css:
3123         (.content-view.timeline > .timeline-overview):
3124         * UserInterface/TimelineContentView.js:
3125         (WebInspector.TimelineContentView):
3126         (WebInspector.TimelineContentView.prototype.updateLayout):
3127         (WebInspector.TimelineContentView.prototype._update):
3128         (WebInspector.TimelineContentView.prototype._recordingStarted):
3129         (WebInspector.TimelineContentView.prototype._recordingStopped):
3130         (WebInspector.TimelineContentView.prototype._recordingReset):
3131         * UserInterface/TimelineManager.js:
3132         (WebInspector.TimelineManager.prototype.eventRecorded.processRecord):
3133         (WebInspector.TimelineManager.prototype.eventRecorded):
3134         * UserInterface/TimelineMarker.js: Renamed from Source/WebInspectorUI/UserInterface/TimelineEventMarker.js.
3135         (WebInspector.TimelineMarker):
3136         (WebInspector.TimelineMarker.prototype.get time):
3137         (WebInspector.TimelineMarker.prototype.set time):
3138         (WebInspector.TimelineMarker.prototype.get type):
3139         * UserInterface/TimelineOverview.css: Added.
3140         (.timeline-overview > .scroll-container):
3141         (.timeline-overview > .scroll-container > .timeline-ruler):
3142         * UserInterface/TimelineOverview.js: Added.
3143         (WebInspector.TimelineOverview):
3144         (WebInspector.TimelineOverview.prototype.get element):
3145         (WebInspector.TimelineOverview.prototype.get startTime):
3146         (WebInspector.TimelineOverview.prototype.set startTime):
3147         (WebInspector.TimelineOverview.prototype.get secondsPerPixel):
3148         (WebInspector.TimelineOverview.prototype.set secondsPerPixel):
3149         (WebInspector.TimelineOverview.prototype.get endTime):
3150         (WebInspector.TimelineOverview.prototype.set endTime):
3151         (WebInspector.TimelineOverview.prototype.addMarker):
3152         (WebInspector.TimelineOverview.prototype.revealMarker):
3153         (WebInspector.TimelineOverview.prototype.updateLayout):
3154         (WebInspector.TimelineOverview.prototype._updateElementWidth):
3155         (WebInspector.TimelineOverview.prototype._needsLayout):
3156         * UserInterface/TimelineRecording.js:
3157         (WebInspector.TimelineRecording.prototype.get startTime):
3158         (WebInspector.TimelineRecording.prototype.get endTime):
3159         (WebInspector.TimelineRecording.prototype.reset):
3160         * UserInterface/TimelineRuler.css:
3161         (.timeline-ruler > .markers):
3162         (.timeline-ruler > .markers > .marker):
3163         (.timeline-ruler > .markers > .marker.current-time):
3164         (.timeline-ruler > .markers > .marker.current-time::before):
3165         (.timeline-ruler > .markers > .marker.load-event):
3166         (.timeline-ruler > .markers > .marker.dom-content-event):
3167         (.timeline-ruler > .markers > .marker.timestamp):
3168         * UserInterface/TimelineRuler.js:
3169         (WebInspector.TimelineRuler):
3170         (WebInspector.TimelineRuler.prototype.updateLayout):
3171         (WebInspector.TimelineRuler.prototype._needsLayout):
3172         (WebInspector.TimelineRuler.prototype._needsMarkerLayout.update):
3173         (WebInspector.TimelineRuler.prototype._needsMarkerLayout):
3174         (WebInspector.TimelineRuler.prototype._recalculate):
3175         (WebInspector.TimelineRuler.prototype._updateLeftPositionOfElement):
3176         (WebInspector.TimelineRuler.prototype._updateMarkers):
3177         (WebInspector.TimelineRuler.prototype._timelineMarkerTimeChanged):
3178
3179 2013-12-13  Timothy Hatcher  <timothy@apple.com>
3180
3181         Clean up and refactor TimelineDecorations into TimelineRuler.
3182
3183         https://bugs.webkit.org/show_bug.cgi?id=125709
3184
3185         Reviewed by Joseph Pecoraro.
3186
3187         * UserInterface/Main.html:
3188         * UserInterface/OverviewTimelineView.css:
3189         (.timeline-view.overview > .timeline-ruler):
3190         (.timeline-view.overview > .timeline-ruler > .header):
3191         (.timeline-view.overview > .timeline-ruler > .event-markers):
3192         Updated class names and border sides.
3193
3194         * UserInterface/OverviewTimelineView.js:
3195         (WebInspector.OverviewTimelineView):
3196         (WebInspector.OverviewTimelineView.prototype.updateLayout):
3197         Call updateLayout on the TimelineRuler.
3198
3199         * UserInterface/TimelineRuler.css: Renamed from Source/WebInspectorUI/UserInterface/TimelineDecorations.css.
3200         (.timeline-ruler):
3201         (.timeline-ruler > .header):
3202         (.timeline-ruler > .header > .divider):
3203         (.timeline-ruler > .header > .divider > .label):
3204         (.timeline-ruler > .event-markers):
3205         (.timeline-ruler > .event-markers > .event-marker-tooltip):
3206         (.timeline-ruler > .event-markers > .event-marker):
3207         (.timeline-ruler > .event-markers > .event-marker.load-event):
3208         (.timeline-ruler > .event-markers > .event-marker.dom-content-event):
3209         (.timeline-ruler > .event-markers > .event-marker.timestamp):
3210         Updated class names and border sides.
3211
3212         * UserInterface/TimelineRuler.js: Renamed from Source/WebInspectorUI/UserInterface/TimelineDecorations.js.
3213         (WebInspector.TimelineRuler):
3214         (WebInspector.TimelineRuler.prototype.get element):
3215         (WebInspector.TimelineRuler.prototype.get headerElement):
3216         (WebInspector.TimelineRuler.prototype.get allowsClippedLabels):
3217         (WebInspector.TimelineRuler.prototype.set allowsClippedLabels):
3218         (WebInspector.TimelineRuler.prototype.get zeroTime):
3219         (WebInspector.TimelineRuler.prototype.set zeroTime):
3220         (WebInspector.TimelineRuler.prototype.get startTime):
3221         (WebInspector.TimelineRuler.prototype.set startTime):
3222         (WebInspector.TimelineRuler.prototype.get duration):
3223         (WebInspector.TimelineRuler.prototype.set duration):
3224         (WebInspector.TimelineRuler.prototype.get endTime):
3225         (WebInspector.TimelineRuler.prototype.set endTime):
3226         (WebInspector.TimelineRuler.prototype.get secondsPerPixel):
3227         (WebInspector.TimelineRuler.prototype.set secondsPerPixel):
3228         (WebInspector.TimelineRuler.prototype.updateLayout.removeDividerAndSelectNext):
3229         (WebInspector.TimelineRuler.prototype.updateLayout):
3230         (WebInspector.TimelineRuler.prototype._needsLayout):
3231         (WebInspector.TimelineRuler.prototype._recalculate):
3232         Refactor so the times are stored on TimelineRuler and not passed in each time an update is needed.
3233         Support dividers that don't always start at the zero position, allowing a sliding time ruler.
3234         Support for a non-pinned ruler where the end time is not fixed and the scale is specified in
3235         seconds-per-pixel.
3236
3237 2014-01-08  Timothy Hatcher  <timothy@apple.com>
3238
3239         Improve scroll performance of WebInspector.TreeOutlineDataGridSynchronizer.
3240
3241         https://bugs.webkit.org/show_bug.cgi?id=126660
3242
3243         Reviewed by Joseph Pecoraro.
3244
3245         * UserInterface/TreeOutlineDataGridSynchronizer.js:
3246         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._treeOutlineScrolled):
3247         (WebInspector.TreeOutlineDataGridSynchronizer.prototype._dataGridScrolled):
3248         Ignore scroll events triggered by our internal use of setting scrollTop.
3249
3250 2013-11-15  Timothy Hatcher  <timothy@apple.com>
3251
3252         Add a synchronized DataGrid to the OverviewTimelineView.
3253
3254         The DataGrid is synchronized with the sidebar TreeOutline to appear as one when the view
3255         and sidebar are both showing. The two scroll, expand and collapse in sync when the view
3256         is showing. When the view is not showing the sidebar can scroll independently.
3257
3258         https://bugs.webkit.org/show_bug.cgi?id=124429
3259
3260         Reviewed by Joseph Pecoraro.
3261
3262         * UserInterface/DataGrid.js:
3263         (WebInspector.DataGrid):
3264         (WebInspector.DataGrid.createSortableDataGrid):
3265         (WebInspector.DataGrid.prototype._copyTextForDataGridNode):
3266         (WebInspector.DataGridNode.prototype.createCellContent):
3267         Handle undefined/null cells better by substituting empty strings.
3268
3269         (WebInspector.DataGridNode.prototype.collapse):
3270         (WebInspector.DataGridNode.prototype.expand):
3271         Fire events on the DataGrid for expand and collapse.
3272