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