Web Inspector: Modify the type profiler runtime protocol to transfer some computation...
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
1 2014-09-10  Saam Barati  <saambarati1@gmail.com>
2
3         Web Inspector: Modify the type profiler runtime protocol to transfer some computation into the WebInspector
4         https://bugs.webkit.org/show_bug.cgi?id=136500
5
6         Reviewed by Joseph Pecoraro.
7
8         This patch maintains the same UI in the Web Inspector for displaying
9         type information, but now accounts for the new protocol for type profiling.
10         
11         The Inspector now has a TypeSet class that wraps the TypeDescription 
12         protocol object and creates a simple interface for asking protocol objects 
13         about their type.
14
15         * UserInterface/Controllers/TypeTokenAnnotator.js:
16         (WebInspector.TypeTokenAnnotator.prototype._insertTypeTokensForEachNode):
17         * UserInterface/Main.html:
18         * UserInterface/Models/TypeSet.js: Added.
19         (WebInspector.TypeSet):
20         (WebInspector.TypeSet.fromPayload):
21         (WebInspector.TypeSet.prototype.isContainedIn):
22         * UserInterface/Views/SourceCodeTextEditor.js:
23         (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptTypeInformation.handler):
24         (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptTypeInformation):
25         * UserInterface/Views/TypePropertiesSection.js:
26         (WebInspector.TypePropertiesSection.prototype.onpopulate):
27         (WebInspector.TypePropertyTreeElement.prototype.onpopulate):
28         * UserInterface/Views/TypeTokenView.js:
29         (WebInspector.TypeTokenView.prototype.update):
30         (WebInspector.TypeTokenView.prototype._shouldShowPopover):
31         (WebInspector.TypeTokenView.prototype._displayTypeName):
32
33 2014-09-10  Joseph Pecoraro  <pecoraro@apple.com>
34
35         Web Inspector: Eliminate typeof "undefined" checks
36         https://bugs.webkit.org/show_bug.cgi?id=136691
37
38         Reviewed by Alexey Proskuryakov.
39
40         * UserInterface/Base/Main.js:
41         (WebInspector.linkifyURLAsNode):
42         (WebInspector.linkifyStringAsFragment):
43         * UserInterface/Protocol/InspectorBackend.js:
44         (InspectorBackend.Command.prototype._invokeWithArguments):
45         * UserInterface/Views/DataGrid.js:
46         (WebInspector.DataGrid.prototype.get resizeMethod):
47         * UserInterface/Views/NavigationBar.js:
48         (WebInspector.NavigationBar.prototype.get minimumWidth):
49
50 2014-09-10  Joseph Pecoraro  <pecoraro@apple.com>
51
52         Web Inspector: Fix obscure ESLint warnings and skip directories
53         https://bugs.webkit.org/show_bug.cgi?id=136686
54
55         Reviewed by Timothy Hatcher.
56
57         * .eslintignore: Added.
58         Skip directories we do not want ESLint to process.
59
60         * .eslintrc:
61         Add rules we've seen and sort sections.
62
63         * UserInterface/Controllers/FormatterContentBuilder.js:
64         (FormatterContentBuilder.prototype._appendIndent):
65         * UserInterface/Models/Color.js:
66         * UserInterface/Models/DOMNodeStyles.js:
67         (WebInspector.DOMNodeStyles.prototype._parseStyleDeclarationPayload):
68         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
69         * UserInterface/Views/DOMTreeDataGridNode.js:
70         * UserInterface/Views/DOMTreeElement.js:
71         (WebInspector.DOMTreeElement.prototype.ondelete):
72         (WebInspector.DOMTreeElement.prototype._insertInLastAttributePosition):
73         (WebInspector.DOMTreeElement.prototype._distinctClosingTagElement):
74         * UserInterface/Views/EditingSupport.js:
75         (WebInspector.EditingConfig):
76         * UserInterface/Views/LayerTreeDataGridNode.js:
77         (WebInspector.LayerTreeDataGridNode.prototype._makeOutlet):
78         * UserInterface/Views/TreeOutline.js:
79         (TreeOutline.prototype.appendChild):
80         (TreeOutline.prototype.insertChild):
81         (TreeOutline.prototype.removeChildAtIndex):
82         (TreeOutline.prototype.removeChild):
83         (TreeElement.prototype.expandRecursively):
84         Fix linter issues.
85
86 2014-09-10  Joseph Pecoraro  <pecoraro@apple.com>
87
88         Web Inspector: Fix ESLint consistent-return warnings
89         https://bugs.webkit.org/show_bug.cgi?id=136682
90
91         Reviewed by Timothy Hatcher.
92
93         * .eslintrc:
94         * UserInterface/Controllers/BranchManager.js:
95         (WebInspector.BranchManager.prototype.createBranch):
96         * UserInterface/Controllers/FrameResourceManager.js:
97         (WebInspector.FrameResourceManager.prototype._addNewResourceToFrame):
98         * UserInterface/Models/DOMNodeStyles.js:
99         (WebInspector.DOMNodeStyles.prototype._parseStyleDeclarationPayload):
100         * UserInterface/Views/BoxModelDetailsSectionRow.js:
101         (WebInspector.BoxModelDetailsSectionRow.prototype._applyUserInput):
102         * UserInterface/Views/DOMTreeElement.js:
103         (WebInspector.DOMTreeElement.prototype.showChild):
104         (WebInspector.DOMTreeElement.prototype._startEditingTarget):
105         (WebInspector.DOMTreeElement.prototype._startEditing):
106         * UserInterface/Views/EditingSupport.js:
107         * UserInterface/Views/EventListenerSectionGroup.js:
108         (WebInspector.EventListenerSectionGroup.prototype._nodeTextOrLink):
109         * UserInterface/Views/FrameContentView.js:
110         (WebInspector.FrameContentView.prototype._showContentViewForIdentifier):
111         * UserInterface/Views/NavigationBar.js:
112         (WebInspector.NavigationBar.prototype.insertNavigationItem):
113         (WebInspector.NavigationBar.prototype.removeNavigationItem):
114         * UserInterface/Views/QuickConsole.js:
115         (WebInspector.QuickConsole.prototype._insertExecutionContextPathComponentForFrame):
116         * UserInterface/Views/Sidebar.js:
117         (WebInspector.Sidebar.prototype.addSidebarPanel):
118         (WebInspector.Sidebar.prototype.removeSidebarPanel):
119         * UserInterface/Views/TextEditor.js:
120         (WebInspector.TextEditor.prototype.addStyleClassToLine):
121         (WebInspector.TextEditor.prototype.removeStyleClassFromLine):
122         (WebInspector.TextEditor.prototype.toggleStyleClassForLine):
123
124 2014-09-10  Joseph Pecoraro  <pecoraro@apple.com>
125
126         Web Inspector: Fix ESLint no-undef warnings
127         https://bugs.webkit.org/show_bug.cgi?id=136660
128
129         Reviewed by Timothy Hatcher.
130
131         * UserInterface/Models/DOMSearchMatchObject.js:
132         (WebInspector.DOMSearchMatchObject.prototype._generateClassName):
133         (WebInspector.DOMSearchMatchObject.titleForDOMNode):
134         * UserInterface/Models/Gradient.js:
135         (WebInspector.Gradient.fromString):
136         * UserInterface/Views/CodeMirrorAdditions.js:
137         * UserInterface/Views/ReplayDashboardView.js:
138         (WebInspector.ReplayDashboardView):
139
140 2014-09-10  Joseph Pecoraro  <pecoraro@apple.com>
141
142         Web Inspector: Remove unused Console search highlight methods
143         https://bugs.webkit.org/show_bug.cgi?id=136661
144
145         Reviewed by Timothy Hatcher.
146
147         ESLint's no-undef warning complained about some undefined references
148         in these functions that would have thrown exceptions. Turns out this
149         code is unused, and we do highlighting in the console separately.
150
151         * UserInterface/Views/ConsoleCommand.js:
152         (WebInspector.ConsoleCommand.prototype.clearHighlight): Deleted.
153         (WebInspector.ConsoleCommand.prototype.highlightSearchResults): Deleted.
154         (WebInspector.ConsoleCommand.prototype.matchesRegex): Deleted.
155         * UserInterface/Views/ConsoleMessageImpl.js:
156         (WebInspector.ConsoleMessageImpl.prototype.clearHighlight): Deleted.
157         (WebInspector.ConsoleMessageImpl.prototype.highlightSearchResults): Deleted.
158         (WebInspector.ConsoleMessageImpl.prototype.matchesRegex): Deleted.
159
160 2014-09-10  Joseph Pecoraro  <pecoraro@apple.com>
161
162         Web Inspector: Fix ESLint* no-avoidable-bind warnings
163         https://bugs.webkit.org/show_bug.cgi?id=136690
164
165         Reviewed by Timothy Hatcher.
166
167         * UserInterface/Protocol/RemoteObject.js:
168         (WebInspector.LocalJSONObject.prototype._children):
169         * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
170         (WebInspector.CSSStyleDetailsSidebarPanel):
171         * UserInterface/Views/LayerTreeSidebarPanel.js:
172         (WebInspector.LayerTreeSidebarPanel.prototype._updateDataGrid):
173         * UserInterface/Views/LogContentView.js:
174         (WebInspector.LogContentView.prototype._filterMessages):
175         * UserInterface/Views/TextResourceContentView.js:
176         (WebInspector.TextResourceContentView.prototype.get supplementalRepresentedObjects):
177
178 2014-09-09  Benjamin Poulain  <bpoulain@apple.com>
179
180         Disable the "unreachable-code" warning
181         https://bugs.webkit.org/show_bug.cgi?id=136677
182
183         Reviewed by Darin Adler.
184
185         * Configurations/Base.xcconfig:
186
187 2014-09-08  Joseph Pecoraro  <pecoraro@apple.com>
188
189         Web Inspector: Fix ESLint no-trailing-spaces warnings
190         https://bugs.webkit.org/show_bug.cgi?id=136657
191
192         Reviewed by Andy Estes.
193
194         * .eslintrc:
195         * UserInterface/Base/DOMUtilities.js:
196         * UserInterface/Base/URLUtilities.js:
197         (relativePath):
198         * UserInterface/Base/Utilities.js:
199         * UserInterface/Controllers/CodeMirrorColorEditingController.js:
200         (WebInspector.CodeMirrorColorEditingController.prototype._colorPickerColorChanged):
201         * UserInterface/Controllers/CodeMirrorDragToAdjustNumberController.js:
202         (WebInspector.CodeMirrorDragToAdjustNumberController.prototype.set enabled):
203         (WebInspector.CodeMirrorDragToAdjustNumberController.prototype.dragToAdjustControllerCanAdjustObjectAtPoint):
204         * UserInterface/Controllers/CodeMirrorEditingController.js:
205         (WebInspector.CodeMirrorEditingController.prototype.handleKeydownEvent):
206         * UserInterface/Controllers/CodeMirrorGradientEditingController.js:
207         (WebInspector.CodeMirrorGradientEditingController.prototype.gradientSliderStopWasSelected):
208         * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
209         (WebInspector.CodeMirrorTokenTrackingController.prototype._processJavaScriptExpression):
210         * UserInterface/Controllers/DragToAdjustController.js:
211         (WebInspector.DragToAdjustController.prototype.set active):
212         (WebInspector.DragToAdjustController.prototype._setDragging):
213         (WebInspector.DragToAdjustController.prototype._setTracksMouseClickAndDrag):
214         * UserInterface/External/Esprima/esprima.js:
215         * UserInterface/Models/ApplicationCacheFrame.js:
216         (WebInspector.ApplicationCacheFrame):
217         * UserInterface/Models/ApplicationCacheManifest.js:
218         (WebInspector.ApplicationCacheManifest):
219         (WebInspector.ApplicationCacheManifest.prototype.get manifestURL):
220         * UserInterface/Models/CookieStorageObject.js:
221         * UserInterface/Models/DOMSearchMatchObject.js:
222         (WebInspector.DOMSearchMatchObject.prototype.get title):
223         (WebInspector.DOMSearchMatchObject.titleForDOMNode):
224         * UserInterface/Models/DatabaseObject.js:
225         (WebInspector.DatabaseObject.prototype.getTableNames):
226         * UserInterface/Models/DatabaseTableObject.js:
227         (WebInspector.DatabaseTableObject):
228         * UserInterface/Models/Gradient.js:
229         (WebInspector.Gradient.fromString):
230         (WebInspector.RadialGradient.prototype.toString):
231         * UserInterface/Models/IssueMessage.js:
232         (WebInspector.IssueMessage.prototype._formatTextIfNecessary):
233         * UserInterface/Models/Resource.js:
234         (WebInspector.Resource.prototype.getImageSize.imageDidLoad):
235         (WebInspector.Resource.prototype.getImageSize):
236         * UserInterface/Models/Script.js:
237         (WebInspector.Script.prototype._makeSyntaxTree):
238         * UserInterface/Models/SourceCodeLocation.js:
239         (WebInspector.SourceCodeLocation.prototype.hasDifferentDisplayLocation):
240         * UserInterface/Models/TextMarker.js:
241         * UserInterface/Protocol/PageObserver.js:
242         * UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:
243         (WebInspector.ApplicationCacheDetailsSidebarPanel.prototype.set applicationCacheFrame):
244         (WebInspector.ApplicationCacheDetailsSidebarPanel.prototype.refresh):
245         (WebInspector.ApplicationCacheDetailsSidebarPanel.prototype._networkStateUpdated):
246         * UserInterface/Views/ApplicationCacheFrameTreeElement.js:
247         (WebInspector.ApplicationCacheFrameTreeElement):
248         * UserInterface/Views/ApplicationCacheManifestTreeElement.js:
249         (WebInspector.ApplicationCacheManifestTreeElement.prototype.get name):
250         (WebInspector.ApplicationCacheManifestTreeElement.prototype.get secondaryName):
251         * UserInterface/Views/ButtonNavigationItem.js:
252         (WebInspector.ButtonNavigationItem):
253         * UserInterface/Views/ColorPicker.js:
254         * UserInterface/Views/ColorWheel.js:
255         (WebInspector.ColorWheel.prototype._draw):
256         * UserInterface/Views/CompletionSuggestionsView.js:
257         (WebInspector.CompletionSuggestionsView.prototype.show):
258         * UserInterface/Views/ConsoleCommand.js:
259         * UserInterface/Views/ConsolePrompt.js:
260         * UserInterface/Views/ContentFlowTreeElement.js:
261         * UserInterface/Views/CookieStorageTreeElement.js:
262         (WebInspector.CookieStorageTreeElement):
263         * UserInterface/Views/EventListenerSectionGroup.js:
264         (WebInspector.EventListenerSectionGroup.prototype._functionTextOrLink):
265         * UserInterface/Views/GeneralTreeElementPathComponent.js:
266         * UserInterface/Views/GoToLineDialog.js:
267         (WebInspector.GoToLineDialog.prototype._handleKeydownEvent):
268         * UserInterface/Views/LayerTreeDataGridNode.js:
269         (WebInspector.LayerTreeDataGridNode.prototype._makeNameCell):
270         * UserInterface/Views/LayerTreeSidebarPanel.js:
271         * UserInterface/Views/LogContentView.js:
272         (WebInspector.LogContentView.prototype._highlightRanges):
273         * UserInterface/Views/NavigationBar.js:
274         (WebInspector.NavigationBar):
275         * UserInterface/Views/NavigationItem.js:
276         (WebInspector.NavigationItem):
277         * UserInterface/Views/ResourceDetailsSidebarPanel.js:
278         (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshImageSizeSection):
279         * UserInterface/Views/ScopeBar.js:
280         * UserInterface/Views/ScopeBarItem.js:
281         (WebInspector.ScopeBarItem):
282         * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
283         (WebInspector.ScopeChainDetailsSidebarPanel):
284         * UserInterface/Views/ScriptTimelineDataGridNode.js:
285         (WebInspector.ScriptTimelineDataGridNode.prototype.updateRangeTimes):
286         * UserInterface/Views/ScriptTreeElement.js:
287         (WebInspector.ScriptTreeElement):
288         * UserInterface/Views/SearchBar.js:
289         * UserInterface/Views/SearchResultTreeElement.js:
290         (WebInspector.SearchResultTreeElement.truncateAndHighlightTitle):
291         * UserInterface/Views/Slider.js:
292
293 2014-09-09  Joseph Pecoraro  <pecoraro@apple.com>
294
295         Web Inspector: Fix ESLint eqeqeq warnings
296         https://bugs.webkit.org/show_bug.cgi?id=136658
297
298         Reviewed by Andy Estes.
299
300         * UserInterface/Controllers/DOMTreeManager.js:
301         (WebInspector.DOMTreeManager.prototype.mycallback):
302         (WebInspector.DOMTreeManager.prototype.searchResult):
303         * UserInterface/Models/Breakpoint.js:
304         (WebInspector.Breakpoint.prototype.clearActions):
305         * UserInterface/Models/DOMTree.js:
306         (WebInspector.DOMTree.prototype._requestRootDOMNode.rootObjectAvailable):
307         (WebInspector.DOMTree.prototype._requestRootDOMNode.rootDOMNodeAvailable):
308         (WebInspector.DOMTree.prototype._requestRootDOMNode.dispatchCallbacks):
309         (WebInspector.DOMTree.prototype._requestRootDOMNode):
310         * UserInterface/Models/ProbeSet.js:
311         (WebInspector.ProbeSet.prototype.removeProbe):
312         * UserInterface/Models/ProbeSetDataTable.js:
313         (WebInspector.ProbeSetDataTable.prototype.addSampleForProbe):
314         * UserInterface/Views/CodeMirrorAdditions.js:
315         * UserInterface/Views/CookieStorageContentView.js:
316         (WebInspector.CookieStorageContentView.prototype._filterCookies):
317         (WebInspector.cookieMatchesResourceURL):
318         * UserInterface/Views/DOMStorageContentView.js:
319         (WebInspector.DOMStorageContentView.prototype._editingCallback):
320         * UserInterface/Views/DOMTreeElement.js:
321         (WebInspector.DOMTreeElement):
322         (WebInspector.DOMTreeElement.prototype._updateChildren):
323         (WebInspector.DOMTreeElement.prototype._startEditingTarget):
324         (WebInspector.DOMTreeElement.prototype._textNodeEditingCommitted):
325         * UserInterface/Views/DataGrid.js:
326         (WebInspector.DataGrid.prototype._resizerDragging):
327         * UserInterface/Views/DatabaseContentView.js:
328         (WebInspector.DatabaseContentView.prototype._queryError):
329         * UserInterface/Views/DetailsSectionSimpleRow.js:
330         (.valueElementClicked):
331         (WebInspector.DetailsSectionSimpleRow):
332         * UserInterface/Views/Slider.js:
333         (WebInspector.Slider.prototype.get _maxX):
334         * UserInterface/Views/TreeOutline.js:
335         (TreeElement.prototype.expand):
336
337 2014-09-09  Jono Wells  <jonowells@apple.com>
338
339         Web Inspector: Fix ESLint no-extra-semi
340         https://bugs.webkit.org/show_bug.cgi?id=136666
341
342         Reviewed by Andy Estes.
343
344         Add explicit no-extra-semi rule to .eslintrc. Remove all unnecessary
345         semicolons as identified by ESLint.
346
347         * .eslintrc:
348         * Tools/PrettyPrinting/Formatter.js:
349         (Formatter):
350         * UserInterface/Controllers/Formatter.js:
351         (Formatter):
352         * UserInterface/Models/Resource.js:
353         (WebInspector.Resource.prototype.getImageSize.imageDidLoad):
354         (WebInspector.Resource.prototype.getImageSize):
355         * UserInterface/Views/LayerTreeSidebarPanel.js:
356         (WebInspector.LayerTreeSidebarPanel.prototype._sortDataGrid.comparator):
357         (WebInspector.LayerTreeSidebarPanel.prototype._sortDataGrid):
358         * UserInterface/Views/ObjectPropertiesSection.js:
359         (WebInspector.ObjectPropertyTreeElement.prototype.callback):
360         (WebInspector.ObjectPropertyTreeElement.prototype.applyExpression):
361
362 2014-09-09  Jono Wells  <jonowells@apple.com>
363
364         Web Inspector: Fix ESLint semi (missing semicolon)
365         https://bugs.webkit.org/show_bug.cgi?id=136665
366
367         Reviewed by Andy Estes.
368
369         Add missing semicolons as identified by ESLint. Add explicit semi rule to .eslintrc.
370
371         * .eslintrc:
372         * Tools/PrettyPrinting/FormatterContentBuilder.js:
373         * Tools/PrettyPrinting/FormatterDebug.js:
374         (Formatter.prototype.debug):
375         * UserInterface/Base/DOMUtilities.js:
376         * UserInterface/Base/EventListener.js:
377         (WebInspector.EventListener):
378         (WebInspector.EventListener.prototype.this._callback):
379         (WebInspector.EventListener.prototype.connect):
380         * UserInterface/Base/Object.js:
381         (WebInspector.Object):
382         (WebInspector.Object.addConstructorFunctions):
383         (WebInspector.Event):
384         * UserInterface/Base/URLUtilities.js:
385         (WebInspector.displayNameForURL):
386         (WebInspector.displayNameForHost):
387         * UserInterface/Base/Utilities.js:
388         (.):
389         * UserInterface/Controllers/BranchManager.js:
390         (WebInspector.BranchManager):
391         * UserInterface/Controllers/CSSStyleManager.js:
392         (WebInspector.CSSStyleManager):
393         * UserInterface/Controllers/CodeMirrorColorEditingController.js:
394         (WebInspector.CodeMirrorColorEditingController):
395         * UserInterface/Controllers/CodeMirrorEditingController.js:
396         (WebInspector.CodeMirrorEditingController):
397         * UserInterface/Controllers/CodeMirrorGradientEditingController.js:
398         (WebInspector.CodeMirrorGradientEditingController):
399         (WebInspector.CodeMirrorGradientEditingController.prototype.popoverDidPresent):
400         * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
401         * UserInterface/Controllers/FormatterContentBuilder.js:
402         * UserInterface/Controllers/FormatterSourceMap.js:
403         (WebInspector.FormatterSourceMap.fromBuilder):
404         * UserInterface/Controllers/IssueManager.js:
405         (WebInspector.IssueManager):
406         * UserInterface/Controllers/LogManager.js:
407         (WebInspector.LogManager):
408         * UserInterface/Models/BreakpointAction.js:
409         * UserInterface/Models/CSSCompletions.js:
410         (WebInspector.CSSCompletions):
411         (WebInspector.CSSCompletions.requestCSSNameCompletions):
412         * UserInterface/Models/CSSKeywordCompletions.js:
413         (WebInspector.CSSKeywordCompletions.forProperty):
414         (WebInspector.CSSKeywordCompletions.isColorAwareProperty):
415         * UserInterface/Models/CSSStyleSheet.js:
416         (WebInspector.CSSStyleSheet.resetUniqueDisplayNameNumbers):
417         * UserInterface/Models/Color.js:
418         (WebInspector.Color):
419         (WebInspector.Color.fromString):
420         * UserInterface/Models/DOMNode.js:
421         (WebInspector.DOMNode):
422         * UserInterface/Models/DOMSearchMatchObject.js:
423         (WebInspector.DOMSearchMatchObject.titleForDOMNode):
424         * UserInterface/Models/ExecutionContext.js:
425         (WebInspector.ExecutionContext.supported):
426         * UserInterface/Models/Gradient.js:
427         (WebInspector.LinearGradient):
428         (WebInspector.LinearGradient.linearGradientWithComponents):
429         (WebInspector.RadialGradient):
430         (WebInspector.RadialGradient.radialGradientWithComponents):
431         * UserInterface/Models/IssueMessage.js:
432         (WebInspector.IssueMessage):
433         * UserInterface/Models/ReplaySessionSegment.js:
434         (WebInspector.IncompleteSessionSegment):
435         * UserInterface/Models/Resource.js:
436         (WebInspector.Resource.prototype.associateWithScript):
437         * UserInterface/Models/Script.js:
438         (WebInspector.Script.resetUniqueDisplayNameNumbers):
439         * UserInterface/Models/Setting.js:
440         (WebInspector.Setting):
441         * UserInterface/Models/SourceCodePosition.js:
442         (WebInspector.SourceCodePosition):
443         * UserInterface/Models/SourceMap.js:
444         (WebInspector.SourceMap):
445         (WebInspector.SourceMap.StringCharIterator):
446         * UserInterface/Models/TextMarker.js:
447         (WebInspector.TextMarker):
448         * UserInterface/Models/TextRange.js:
449         (WebInspector.TextRange):
450         * UserInterface/Protocol/InspectorFrontendHostStub.js:
451         (.WebInspector.InspectorFrontendHostStub):
452         * UserInterface/Protocol/MessageDispatcher.js:
453         (WebInspector.dispatchNextQueuedMessageFromBackend):
454         (WebInspector.dispatchMessageFromBackend):
455         * UserInterface/Protocol/RemoteObject.js:
456         (WebInspector.RemoteObject):
457         (WebInspector.RemoteObject.fromPrimitiveValue):
458         (WebInspector.RemoteObject.fromLocalObject):
459         (WebInspector.RemoteObject.resolveNode):
460         (WebInspector.RemoteObject.fromPayload):
461         (WebInspector.RemoteObject.type):
462         (WebInspector.RemoteObjectProperty):
463         (WebInspector.RemoteObjectProperty.fromPrimitiveValue):
464         (WebInspector.LocalJSONObject):
465         * UserInterface/Protocol/ReplayObserver.js:
466         (WebInspector.ReplayPosition.fromProtocol):
467         * UserInterface/Views/BreakpointActionView.js:
468         (WebInspector.BreakpointActionView.displayStringForType):
469         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
470         (WebInspector.CSSStyleDeclarationTextEditor.prototype.if):
471         * UserInterface/Views/ClusterContentView.js:
472         (WebInspector.ClusterContentView.prototype.goBack):
473         (WebInspector.ClusterContentView.prototype.goForward):
474         * UserInterface/Views/CodeMirrorAdditions.js:
475         * UserInterface/Views/ColorWheel.js:
476         (WebInspector.ColorWheel):
477         * UserInterface/Views/ConsoleMessage.js:
478         (WebInspector.ConsoleMessage):
479         (WebInspector.ConsoleMessage.create):
480         * UserInterface/Views/ConsoleMessageImpl.js:
481         (WebInspector.ConsoleMessageImpl):
482         * UserInterface/Views/ContextMenu.js:
483         (WebInspector.ContextMenuItem):
484         (WebInspector.ContextSubMenuItem):
485         (WebInspector.ContextMenu):
486         (WebInspector.ContextMenu.Provider):
487         (WebInspector.ContextMenu.registerProvider):
488         (WebInspector.contextMenuItemSelected):
489         (WebInspector.contextMenuCleared):
490         * UserInterface/Views/DOMTreeElement.js:
491         (WebInspector.DOMTreeElement):
492         * UserInterface/Views/DOMTreeOutline.js:
493         (WebInspector.DOMTreeOutline):
494         * UserInterface/Views/DOMTreeUpdater.js:
495         (WebInspector.DOMTreeUpdater):
496         * UserInterface/Views/DatabaseContentView.js:
497         (WebInspector.DatabaseContentView):
498         * UserInterface/Views/EditingSupport.js:
499         (WebInspector.isBeingEdited):
500         (WebInspector.markBeingEdited):
501         (WebInspector.isEditingAnyField):
502         (WebInspector.isEventTargetAnEditableField):
503         (WebInspector.EditingConfig):
504         (WebInspector.startEditing):
505         * UserInterface/Views/EventListenerSection.js:
506         (WebInspector.EventListenerSection):
507         * UserInterface/Views/EventListenerSectionGroup.js:
508         (WebInspector.EventListenerSectionGroup):
509         * UserInterface/Views/FindBanner.js:
510         * UserInterface/Views/GeneralTreeElement.js:
511         (WebInspector.GeneralTreeElement):
512         * UserInterface/Views/GoToLineDialog.js:
513         (WebInspector.GoToLineDialog):
514         * UserInterface/Views/IndeterminateProgressSpinner.js:
515         (WebInspector.IndeterminateProgressSpinner):
516         * UserInterface/Views/LayoutTimelineDataGrid.js:
517         (WebInspector.LayoutTimelineDataGrid):
518         * UserInterface/Views/LogContentView.js:
519         (WebInspector.LogContentView):
520         * UserInterface/Views/NavigationItem.js:
521         * UserInterface/Views/ObjectPropertiesSection.js:
522         (WebInspector.ObjectPropertiesSection):
523         (WebInspector.ObjectPropertiesSection.CompareProperties):
524         (WebInspector.ObjectPropertyTreeElement):
525         * UserInterface/Views/ProbeSetDetailsSection.js:
526         * UserInterface/Views/PropertiesSection.js:
527         (WebInspector.PropertiesSection):
528         * UserInterface/Views/ResourceTreeElement.js:
529         (WebInspector.ResourceTreeElement.compareResourceTreeElements):
530         (WebInspector.ResourceTreeElement.compareFolderAndResourceTreeElements):
531         * UserInterface/Views/ScriptTimelineDataGrid.js:
532         (WebInspector.ScriptTimelineDataGrid):
533         * UserInterface/Views/SearchResultTreeElement.js:
534         (WebInspector.SearchResultTreeElement.truncateAndHighlightTitle):
535         * UserInterface/Views/TimelineRuler.js:
536         (WebInspector.TimelineRuler):
537         (WebInspector.TimelineRuler.prototype.get allowsClippedLabels):
538         (WebInspector.TimelineRuler.prototype._handleMouseUp):
539         * UserInterface/Views/Toolbar.js:
540         * UserInterface/Views/TreeOutline.js:
541         (TreeOutline.prototype.appendChild):
542         (TreeOutline.prototype.insertChild):
543         (TreeOutline.prototype.removeChildAtIndex):
544         (TreeOutline.prototype.removeChild):
545         (TreeOutline.prototype.removeChildren):
546         (TreeOutline.prototype.removeChildrenRecursive):
547         (TreeOutline.prototype._rememberTreeElement):
548         (TreeOutline.prototype._forgetTreeElement):
549         (TreeOutline.prototype._forgetChildrenRecursive):
550         (TreeOutline.prototype.getCachedTreeElement):
551         (TreeOutline.prototype.findTreeElement):
552         (TreeOutline.prototype._treeElementDidChange):
553         (TreeOutline.prototype.treeElementFromPoint):
554         (TreeOutline.prototype._treeKeyDown):
555         (TreeOutline.prototype.expand):
556         (TreeOutline.prototype.collapse):
557         (TreeOutline.prototype.revealed):
558         (TreeOutline.prototype.reveal):
559         (TreeOutline.prototype.select):
560         (TreeOutline.prototype.revealAndSelect):
561         (TreeElement.prototype._attach):
562         (TreeElement.prototype._detach):
563         (TreeElement.treeElementMouseDown):
564         (TreeElement.treeElementToggled):
565         (TreeElement.treeElementDoubleClicked):
566         (TreeElement.prototype.collapse):
567         (TreeElement.prototype.collapseRecursively):
568         (TreeElement.prototype.expand):
569         (TreeElement.prototype.expandRecursively):
570         (TreeElement.prototype.hasAncestor):
571         (TreeElement.prototype.reveal):
572         (TreeElement.prototype.revealed):
573         (TreeElement.prototype.selectOnMouseDown):
574         (TreeElement.prototype.select):
575         (TreeElement.prototype.revealAndSelect):
576         (TreeElement.prototype.deselect):
577         (TreeElement.prototype.onpopulate):
578         (TreeElement.prototype.traverseNextTreeElement):
579         (TreeElement.prototype.traversePreviousTreeElement):
580         (TreeElement.prototype.isEventWithinDisclosureTriangle):
581         * UserInterface/Views/TreeOutlineDataGridSynchronizer.js:
582         (WebInspector.TreeOutlineDataGridSynchronizer):
583
584 2014-09-08  Joseph Pecoraro  <pecoraro@apple.com>
585
586         Web Inspector: Inspector frequently restores wrong view when opened (often Timelines instead of Resource)
587         https://bugs.webkit.org/show_bug.cgi?id=135965
588
589         Reviewed by Timothy Hatcher.
590
591         There were numerous subtle race conditions in state restoration.
592         This patch intends to fix a number of them to get what feels
593         like sane behavior for selected sidebar state restoration.
594
595         1. Starting a Timeline recording no longer automatically switches to the TimelineContentView.
596         This was making every reload switch to Timelines. If you had
597         a resource selected (e.g. the DOM Tree) we should go back
598         to showing the DOM tree.
599
600         2. Background sidebars should not reveal and select tree elements.
601         This was making resources get selected in Timelines when reloading the page
602         because the background Resources sidebar was restoring selection of the resource.
603         That is an unexpected selection and breaks the experience of Timelines.
604
605         3. ContentView changes during page navigation / reload should not be saved, and improve Resource restoration.
606         If a TimelineContentView was in the ContentBrowser back/forward history,
607         a reload with a resource selected in the Resources sidebar would end up
608         showing the Timelines sidebar. This was because when ContentViews are
609         closed during the navigation, the ContentBrowser would fall back to the
610         remaining TimelineContentView and switch to its only allowed sidebar
611         (Timelines). ResourceSidebarPanel, knowing a resource was selected,
612         would select the MainFrame intending to stay in the Resource sidebar,
613         but the resource is okay with showing in any sidebar, so we stay on Timelines.
614
615         4. Resource sidebar state restoration should propertly restore selection.
616         On reload, state restoration would know the resource to re-select in the
617         Resources sidebar. As ResourceTreeElements are added to the sidebar
618         they are checked against the state restoration cookie. If they match,
619         they would select the element and delete the cookie. Unfortunately,
620         if this was the first TreeElement child being added to a FrameTreeElement,
621         the FrameTreeElement onpopulate would remove all children and re-add
622         them in a unique way. Unfortunately this means the TreeElement we
623         selected based on the cookie, immediately got thrown away and recreated,
624         and we no longer reveal and select it. This is a special case for
625         FrameTreeElements which use the onpopulate SPI. So, instead of starting
626         processing the new element queue, if this is the first time just trigger
627         the onpopulate and elements are made just once.
628
629         5. Show Error Console triggering early, could have unexpected sidebar behavior.
630         Opening Web Inspector directly to the console can run before
631         WebInspector.contentLoaded (DOMContentLoaded). So in that case
632         WebInspector.showFullHeightConsole was not handling if the contentBrowser
633         had no content view yet, and the sidebar might be-reopened later on
634         in contentLoaded based on the setting value.
635
636         6. Improve automatic resource selection for sidebars with multiple tree outlines.
637         Selecting a call frame tree element was unexpectedly changing the
638         selection to a Resource where the breakpoint was set. This was
639         because we were only looking at one of potentially many content
640         tree outlines in the sidebar to see if there was a user action.
641         
642         * UserInterface/Base/Main.js:
643         (WebInspector.contentLoaded):
644         (WebInspector.showFullHeightConsole):
645         (WebInspector.toggleConsoleView):
646         (WebInspector._mainResourceDidChange):
647         (WebInspector._provisionalLoadStarted):
648         (WebInspector._revealAndSelectRepresentedObjectInNavigationSidebar):
649         (WebInspector._updateCookieForInspectorViewState):
650         (WebInspector._contentBrowserCurrentContentViewDidChange):
651         * UserInterface/Views/NavigationSidebarPanel.js:
652         (WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
653         * UserInterface/Views/ResourceSidebarPanel.js:
654         (WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange.delayedWork):
655         (WebInspector.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange):
656         * UserInterface/Views/TimelineSidebarPanel.js:
657         (WebInspector.TimelineSidebarPanel.prototype._recordingLoaded):
658
659 2014-09-08  Matt Baker  <mattbaker@apple.com>
660
661         Web Inspector: Add layout test for lowercase CSSProperty names
662         https://bugs.webkit.org/show_bug.cgi?id=135961
663
664         Reviewed by Joseph Pecoraro.
665
666         Modified test components to support testing CSSStyleManager and related classes:
667         - Added required models to Test.html
668         - Added CSSCompletions initialization to Test.js
669         - CSSCompletions doesn't assume presence of CodeMirror.
670
671         * UserInterface/Base/Test.js:
672         (WebInspector.loaded):
673         * UserInterface/Models/CSSCompletions.js:
674         * UserInterface/Test.html:
675
676 2014-09-08  Matt Baker  <mattbaker@apple.com>
677
678         Web Inspector: Fixes to layout test infrastructure
679         https://bugs.webkit.org/show_bug.cgi?id=136360
680
681         Reviewed by Joseph Pecoraro.
682
683         Added missing includes to Test.html, which was breaking tests that
684         depended on SourceCodeLocation and LazySourceCodeLocation. Also fixed
685         bug which prevented test results from being resent after reloading the
686         page under test.
687
688         * UserInterface/Base/Test.js:
689         (InspectorTest.reloadPage):
690         * UserInterface/Test.html:
691
692 2014-09-07  Timothy Hatcher  <timothy@apple.com>
693
694         Use a <circle> instead of a <path> in DownloadArrow.svg.
695         https://bugs.webkit.org/show_bug.cgi?id=136608
696
697         Reviewed by Antoine Quint.
698
699         * UserInterface/Images/DownloadArrow.svg:
700         * UserInterface/Views/TreeElementStatusButton.css:
701         (.item > .status > .status-button > svg .filled):
702         (body.mac-platform.legacy .item > .status > .status-button > svg .filled):
703         (:focus .item.selected > .status > .status-button > svg .filled):
704         (.item > .status > .status-button > svg .stroked):
705         (body.mac-platform.legacy .item > .status > .status-button > svg .stroked):
706         (:focus .item.selected > .status > .status-button > svg .stroked):
707         Tweak CSS selectors to apply to other shapes, not just path.
708
709 2014-09-06  Darin Adler  <darin@apple.com>
710
711         Make updates suggested by new version of Xcode
712         https://bugs.webkit.org/show_bug.cgi?id=136603
713
714         Reviewed by Mark Rowe.
715
716         * Configurations/Base.xcconfig: Added CLANG_WARN_BOOL_CONVERSION, CLANG_WARN_CONSTANT_CONVERSION,
717         CLANG_WARN_EMPTY_BODY, CLANG_WARN_ENUM_CONVERSION, CLANG_WARN_INT_CONVERSION,
718         CLANG_WARN_UNREACHABLE_CODE, CLANG_WARN__DUPLICATE_METHOD_MATCH, ENABLE_STRICT_OBJC_MSGSEND,
719         GCC_WARN_UNDECLARED_SELECTOR, and GCC_WARN_UNUSED_FUNCTION as suggested by Xcode update check.
720         Also removed duplicate GCC_WARN_UNUSED_VARIABLE line.
721
722         * WebInspectorUI.xcodeproj/project.pbxproj: Updated LastUpgradeCheck.
723
724 2014-09-02  Brian J. Burg  <burg@cs.washington.edu>
725
726         LegacyProfiler: remove redundant ProfileNode members and other cleanup
727         https://bugs.webkit.org/show_bug.cgi?id=136380
728
729         Reviewed by Timothy Hatcher.
730
731         Remove unused Profile.idleTime member.
732
733         * UserInterface/Models/Profile.js:
734         (WebInspector.Profile.prototype.get idleTime): Deleted.
735         * UserInterface/Models/ScriptTimelineRecord.js:
736         (WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload):
737
738 2014-09-02  Brian J. Burg  <burg@cs.washington.edu>
739
740         Web Inspector: remove ProfilerAgent and legacy profiler files in the frontend
741         https://bugs.webkit.org/show_bug.cgi?id=136462
742
743         Reviewed by Timothy Hatcher.
744
745         The legacy profiler manager didn't do anything, and its views and models
746         have been superseded by new views and models based on the Timeline classes.
747
748         * .eslintrc:
749         * UserInterface/Base/Main.js:
750         (WebInspector.loaded):
751         (WebInspector.openURL): Remove profile URL handling code.
752         * UserInterface/Controllers/LegacyProfileManager.js: Removed.
753         * UserInterface/Main.html:
754         * UserInterface/Protocol/ConsoleObserver.js:
755         (WebInspector.ConsoleObserver.prototype.messageAdded):
756         * UserInterface/Protocol/InspectorFrontendAPI.js:
757         (InspectorFrontendAPI.isProfilingJavaScript): Deleted.
758         (InspectorFrontendAPI.startProfilingJavaScript): Deleted.
759         (InspectorFrontendAPI.stopProfilingJavaScript): Deleted.
760         * UserInterface/Protocol/LegacyProfilerObserver.js: Removed.
761         * UserInterface/Views/LegacyBottomUpProfileDataGridTree.js: Removed.
762         * UserInterface/Views/LegacyJavaScriptProfileObject.js: Removed.
763         * UserInterface/Views/LegacyJavaScriptProfileType.js: Removed.
764         * UserInterface/Views/LegacyJavaScriptProfileView.css: Removed.
765         * UserInterface/Views/LegacyJavaScriptProfileView.js: Removed.
766         * UserInterface/Views/LegacyProfileDataGridTree.js: Removed.
767         * UserInterface/Views/LegacyProfileObject.js: Removed.
768         * UserInterface/Views/LegacyProfileType.js: Removed.
769         * UserInterface/Views/LegacyProfileView.css: Removed.
770         * UserInterface/Views/LegacyProfileView.js: Removed.
771         * UserInterface/Views/LegacyTopDownProfileDataGridTree.js: Removed.
772
773 2014-08-29  Saam Barati  <saambarati1@gmail.com>
774
775         Web Inspector: Create a UI for displaying JavaScript type information
776         https://bugs.webkit.org/show_bug.cgi?id=135142
777
778         Reviewed by Joseph Pecoraro.
779
780         JavaScriptCore now has a type profiler. This patch provides a frontend
781         user interface for displaying this type information in the Web Inspector.
782         The user interface works by placing inline "type tokens" next to important
783         JavaScript expressions: function arguments, function return types, and 
784         variable declarations. Type information can also be seen for almost every
785         JavaScipt expression just by hovering over it while viewing a JavaScript file.
786
787         Currently, turning on the type profiler is expensive, so the inspector
788         ensures to never turn on type profiling until the user specifically asks 
789         for type information to be turned on.
790
791         * UserInterface/Base/Main.js:
792         (WebInspector.loaded):
793         * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
794         (WebInspector.CodeMirrorTokenTrackingController.prototype._startTracking):
795         (WebInspector.CodeMirrorTokenTrackingController.prototype._processNewHoveredToken):
796         Added a new type profiling mode.
797
798         * UserInterface/Controllers/FormatterSourceMap.js:
799         (WebInspector.FormatterSourceMap.prototype.originalToFormatted):
800         (WebInspector.FormatterSourceMap.prototype.originalPositionToFormatted):
801         (WebInspector.FormatterSourceMap.prototype.formattedToOriginal):
802         (WebInspector.FormatterSourceMap.prototype.formattedToOriginalOffset):
803         * UserInterface/Controllers/TypeTokenAnnotator.js: Added.
804         (WebInspector.TypeTokenAnnotator):
805         (WebInspector.TypeTokenAnnotator.prototype.get isActive):
806         (WebInspector.TypeTokenAnnotator.prototype.get sourceCodeTextEditor):
807         (WebInspector.TypeTokenAnnotator.prototype.pause):
808         (WebInspector.TypeTokenAnnotator.prototype.resume):
809         (WebInspector.TypeTokenAnnotator.prototype.refresh):
810         (WebInspector.TypeTokenAnnotator.prototype.reset):
811         (WebInspector.TypeTokenAnnotator.prototype.toggleTypeAnnotations):
812         (WebInspector.TypeTokenAnnotator.prototype._insertAnnotations.):
813         (WebInspector.TypeTokenAnnotator.prototype._insertTypeTokensForEachNode):
814         (WebInspector.TypeTokenAnnotator.prototype._insertToken):
815         (WebInspector.TypeTokenAnnotator.prototype.isLineTerminator):
816         (WebInspector.TypeTokenAnnotator.prototype._translateToOffsetAfterFunctionParameterList):
817         (WebInspector.TypeTokenAnnotator.prototype._clearTimeoutIfNeeded):
818         This class is responsible for producing the inline "type token" annotations.
819
820         * UserInterface/Images/NavigationItemTypes.svg: Added.
821         * UserInterface/Main.html:
822         * UserInterface/Models/Script.js:
823         (WebInspector.Script.prototype.get scriptSyntaxTree):
824         * UserInterface/Models/ScriptSyntaxTree.js:
825         (WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement):
826         (WebInspector.ScriptSyntaxTree.prototype.):
827         (WebInspector.ScriptSyntaxTree.prototype.updateTypes):
828         (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
829         * UserInterface/Views/ScriptContentView.js:
830         (WebInspector.ScriptContentView):
831         (WebInspector.ScriptContentView.prototype.get navigationItems):
832         (WebInspector.ScriptContentView.prototype._contentDidPopulate):
833         (WebInspector.ScriptContentView.prototype._toggleTypeAnnotations):
834         (WebInspector.ScriptContentView.prototype._showJavaScriptTypeInformationSettingChanged):
835         * UserInterface/Views/SourceCodeTextEditor.js:
836         (WebInspector.SourceCodeTextEditor):
837         (WebInspector.SourceCodeTextEditor.prototype.shown):
838         (WebInspector.SourceCodeTextEditor.prototype.hidden):
839         (WebInspector.SourceCodeTextEditor.prototype.canShowTypeAnnotations):
840         (WebInspector.SourceCodeTextEditor.prototype.toggleTypeAnnotations):
841         (WebInspector.SourceCodeTextEditor.prototype.showPopoverForTypes):
842         (WebInspector.SourceCodeTextEditor.prototype.prettyPrint):
843         (WebInspector.SourceCodeTextEditor.prototype._populateWithContent):
844         (WebInspector.SourceCodeTextEditor.prototype._debuggerDidPause):
845         (WebInspector.SourceCodeTextEditor.prototype._debuggerDidResume):
846         (WebInspector.SourceCodeTextEditor.prototype._updateTokenTrackingControllerState):
847         (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerNewHighlightCandidate):
848         (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptTypeInformation.handler):
849         (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptTypeInformation):
850         (WebInspector.SourceCodeTextEditor.prototype._showPopover):
851         (WebInspector.SourceCodeTextEditor.prototype.editingControllerDidFinishEditing):
852         (WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenAnnotator):
853         (WebInspector.SourceCodeTextEditor.prototype._enableScrollEventsForTypeTokenAnnotator):
854         (WebInspector.SourceCodeTextEditor.prototype._disableScrollEventsForTypeTokenAnnotator):
855         (WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenScrollEventHandler.scrollHandler):
856         (WebInspector.SourceCodeTextEditor.prototype._makeTypeTokenScrollEventHandler):
857         * UserInterface/Views/TextContentView.js:
858         (WebInspector.TextContentView.prototype.get navigationItems):
859         * UserInterface/Views/TextEditor.js:
860         (WebInspector.TextEditor.prototype.set formatted):
861         (WebInspector.TextEditor.prototype.canShowTypeAnnotations):
862         (WebInspector.TextEditor.prototype.visibleRangeOffsets):
863         (WebInspector.TextEditor.prototype.originalOffsetToCurrentPosition):
864         (WebInspector.TextEditor.prototype.currentOffsetToCurrentPosition):
865         (WebInspector.TextEditor.prototype.currentPositionToOriginalOffset):
866         (WebInspector.TextEditor.prototype.currentPositionToCurrentOffset):
867         (WebInspector.TextEditor.prototype.setInlineWidget):
868         (WebInspector.TextEditor.prototype.addScrollHandler):
869         (WebInspector.TextEditor.prototype.removeScrollHandler):
870         (WebInspector.TextEditor.prototype._scrollIntoViewCentered):
871         * UserInterface/Views/TextResourceContentView.js:
872         (WebInspector.TextResourceContentView):
873         (WebInspector.TextResourceContentView.prototype.get navigationItems):
874         (WebInspector.TextResourceContentView.prototype._contentDidPopulate):
875         (WebInspector.TextResourceContentView.prototype._toggleTypeAnnotations):
876         (WebInspector.TextResourceContentView.prototype._showJavaScriptTypeInformationSettingChanged):
877         * UserInterface/Views/TypePropertiesSection.js: Added.
878         (WebInspector.TypePropertiesSection):
879         (WebInspector.TypePropertiesSection.prototype.onpopulate):
880         (WebInspector.TypePropertiesSection.PropertyComparator):
881         (WebInspector.TypePropertyTreeElement):
882         (WebInspector.TypePropertyTreeElement.prototype.onpopulate):
883         * UserInterface/Views/TypeTokenView.css: Added.
884         (.type-token):
885         (.type-token-left-spacing):
886         (.type-token-right-spacing):
887         (.type-token-function, .type-token-boolean):
888         (.type-token-number):
889         (.type-token-string):
890         (.type-token-default):
891         (.type-token-empty):
892         (.type-token-many):
893         * UserInterface/Views/TypeTokenView.js: Added.
894         (WebInspector.TypeTokenView):
895         (WebInspector.TypeTokenView.titleForPopover):
896         (WebInspector.TypeTokenView.prototype.update):
897         (WebInspector.TypeTokenView.prototype._setUpMouseoverHandlers):
898         (WebInspector.TypeTokenView.prototype._shouldShowPopover):
899         The inline "type token" view.
900
901 2014-08-29  Saam Barati  <sbarati@apple.com>
902
903         Web Inspector: Fix how Popover animates
904         https://bugs.webkit.org/show_bug.cgi?id=136353
905
906         Reviewed by Timothy Hatcher.
907
908         Popovers currently don't animate properly because they use 
909         window.requestAnimationFrame which won't fire its callback 
910         while the inspector is paused in the debugger. This patches
911         switches the callback mechanism to setTimeout and also changes
912         how a Popover's anchor animates to prevent visual glitches.
913
914         Popover also has a new function that allows a new target
915         frame and new content to be set simultaneously and to
916         animate to show the new content while changing the 
917         location of the popover frame.
918
919         SourceCodeTextEditor uses Popover's new API for animating
920         between popovers when paused in the debugger. SourceCodeTextEditor 
921         also now ensures proper balancing of popover tracking event 
922         listeners.
923
924         * UserInterface/Views/Popover.js:
925         (WebInspector.Popover.prototype.present):
926         (WebInspector.Popover.prototype.presentNewContentWithFrame):
927         (WebInspector.Popover.prototype.dismiss):
928         (WebInspector.Popover.prototype._update):
929         (WebInspector.Popover.prototype.drawBackground):
930         (WebInspector.Popover.prototype._animateFrame):
931         (WebInspector.Popover.prototype._drawFrame):
932         (WebInspector.Popover.prototype._addListenersIfNeeded):
933         (WebInspector.Popover.prototype._animateFrame.drawBackground): Deleted.
934         * UserInterface/Views/SourceCodeTextEditor.js:
935         (WebInspector.SourceCodeTextEditor.prototype._showPopover):
936         (WebInspector.SourceCodeTextEditor.prototype._dismissPopover):
937         (WebInspector.SourceCodeTextEditor.prototype._trackPopoverEvents):
938
939 2014-08-28  Saam Barati  <sbarati@apple.com>
940
941         Web Inspector: Write tests for ScriptSyntaxTree and fix bugs in the data structure
942         https://bugs.webkit.org/show_bug.cgi?id=136272
943
944         Reviewed by Joseph Pecoraro.
945
946         Include the necessary files in Test.html to test ScriptSyntaxTree.
947         Also, ScriptSyntaxTree had a couple of errors for two of its nodes
948         where they simply ignored one of the properties on the node.
949         These errors were found while writing the tests and are fixed
950         in this patch.
951
952         * UserInterface/Models/ScriptSyntaxTree.js:
953         (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
954         * UserInterface/Test.html:
955
956 2014-08-27  Saam Barati  <sbarati@apple.com>
957
958         Web Inspector: Layout issues for popover on not legacy OS
959         https://bugs.webkit.org/show_bug.cgi?id=136268
960
961         Reviewed by Joseph Pecoraro.
962
963         On the latest OS, popovers invade the title bar's space which will
964         cause layout issues because the title bar will render above
965         the popover. Fix this by providing some padding for popovers on 
966         not legacy OSs.
967
968         * UserInterface/Views/Popover.js:
969
970 2014-08-27  Timothy Hatcher  <timothy@apple.com>
971
972         REGRESSION: Web Inspector: Legacy toolbar has two different colors in unfocused windowed mode
973         https://bugs.webkit.org/show_bug.cgi?id=136289
974
975         Reviewed by Darin Adler.
976
977         * UserInterface/Views/Toolbar.css:
978         (body.mac-platform.legacy .toolbar): Override the background-color as transparent. Non-legacy
979         uses a solid color instead of a gradient for window-inactive.
980
981 2014-08-26  Saam Barati  <sbarati@apple.com>
982
983         Web Inspector: Fix CodeMirrorTokenTrackingController::_startTracking assertion
984         https://bugs.webkit.org/show_bug.cgi?id=136160
985
986         Reviewed by Joseph Pecoraro.
987
988         Check if '_tracking' is already true before calling '_startTracking'
989         to prevent the assertion from always firing.
990
991         * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
992         (WebInspector.CodeMirrorTokenTrackingController.prototype._mouseEntered):
993
994 2014-08-25  Brent Fulgham  <bfulgham@apple.com>
995
996         [Win] Pass OFFICIAL_BUILD flag to WebInspectorUI build process
997         https://bugs.webkit.org/show_bug.cgi?id=136229
998
999         Reviewed by Dean Jackson.
1000
1001         * WebInspectorUI.vcxproj/WebInspectorUI.make: Pass OFFICIAL_BUILD
1002         flag to build-webinspectorui.pl.
1003         * WebInspectorUI.vcxproj/build-webinspectorui.pl: Accept and use
1004         the OFFICIAL_BUILD flag.
1005
1006 2014-08-24  Benjamin Poulain  <benjamin@webkit.org>
1007
1008         The inspector should not use the "after" pseudo element with the compatibility syntax
1009         https://bugs.webkit.org/show_bug.cgi?id=136204
1010
1011         Reviewed by Darin Adler.
1012
1013         We should only use hte proper pseudo element syntax inside WebKit.
1014
1015         * Tools/PrettyPrinting/codemirror-additions.css:
1016         * Tools/PrettyPrinting/populate/apple.css:
1017
1018 2014-08-24  Brian J. Burg  <burg@cs.washington.edu>
1019
1020         Web Inspector: Rename DOM.RGBA and remove workarounds in the bindings generator
1021         https://bugs.webkit.org/show_bug.cgi?id=136025
1022
1023         Reviewed by Joseph Pecoraro.
1024
1025         Also rename DOM.RGBA in legacy protocol specifications.
1026
1027         * Versions/Inspector-iOS-6.0.json:
1028         * Versions/Inspector-iOS-7.0.json:
1029
1030 2014-08-21  Simon Fraser  <simon.fraser@apple.com>
1031
1032         Add a button to enable paint flashing in the web inspector
1033         https://bugs.webkit.org/show_bug.cgi?id=136133
1034
1035         Reviewed by Tim Hatcher.
1036         
1037         Add a button to the right of the layer borders button to turn on paint flashing.
1038         Future patches will actually enable this feature.
1039
1040         * Localizations/en.lproj/localizedStrings.js: Tooltip strings.
1041         * UserInterface/Images/PaintFlashing.svg: Added. "Paintbrush" icon.
1042         * UserInterface/Views/DOMTreeContentView.js:
1043         (WebInspector.DOMTreeContentView):
1044         (WebInspector.DOMTreeContentView.prototype.get navigationItems):
1045         (WebInspector.DOMTreeContentView.prototype._togglePaintFlashing):
1046
1047 2014-08-20  Saam Barati  <sbarati@apple.com>
1048
1049         Rename HighFidelityTypeProfiling variables for more clarity
1050         https://bugs.webkit.org/show_bug.cgi?id=135899
1051
1052         Reviewed by Geoffrey Garen.
1053
1054         Change a reference in a comment to a JavaScriptCore file to its 
1055         newly renamed variant.
1056
1057         * UserInterface/Models/ScriptSyntaxTree.js:
1058
1059 2014-08-18  Saam Barati  <sbarati@apple.com>
1060
1061         Web Inspector: Introduce an inspector Abstract Syntax Tree.
1062         https://bugs.webkit.org/show_bug.cgi?id=135763
1063
1064         Reviewed by Joseph Pecoraro.
1065
1066         This patch adds an Abstract Syntax Tree to the Web inspector. 
1067         This syntax tree is modeled off the Esprima.js syntax tree
1068         which complies with the Mozilla Parser API:
1069         https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Parser_API
1070         Script is the owner of the Web Inspector syntax tree, and has an API
1071         for accessing its syntax tree property.
1072
1073         * UserInterface/External/Esprima/esprima.js:
1074         * UserInterface/Main.html:
1075         * UserInterface/Models/Script.js:
1076         (WebInspector.Script):
1077         (WebInspector.Script.prototype.requestScriptSyntaxTree.makeSyntaxTreeAndCallCallback):
1078         (WebInspector.Script.prototype._resolveResource):
1079         (WebInspector.Script.prototype._makeSyntaxTree):
1080         * UserInterface/Models/ScriptSyntaxTree.js: Added.
1081         (WebInspector.ScriptSyntaxTree):
1082         (WebInspector.ScriptSyntaxTree.prototype.get parsedSuccessfully):
1083         (WebInspector.ScriptSyntaxTree.prototype.forEachNode):
1084         (WebInspector.ScriptSyntaxTree.prototype.):
1085         (WebInspector.ScriptSyntaxTree.prototype.filter):
1086         (WebInspector.ScriptSyntaxTree.prototype.filterForNodesInRange):
1087         (WebInspector.ScriptSyntaxTree.prototype.filterByRange):
1088         (WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement.removeFunctionsFilter):
1089         (WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement):
1090         (WebInspector.ScriptSyntaxTree.prototype.updateTypes):
1091         (WebInspector.ScriptSyntaxTree.prototype._defaultParserState):
1092         (WebInspector.ScriptSyntaxTree.prototype._recurse):
1093         (WebInspector.ScriptSyntaxTree.prototype._recurseArray):
1094         (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
1095
1096 2014-08-16  Joseph Pecoraro  <pecoraro@apple.com>
1097
1098         Web Inspector: Improve performance of selection range changes viewing Scripts timeline
1099         https://bugs.webkit.org/show_bug.cgi?id=136015
1100
1101         Reviewed by Timothy Hatcher.
1102
1103         * UserInterface/Base/Utilities.js:
1104         (clamp):
1105         Helper function to clamp a value between a min and max.
1106
1107         * UserInterface/Models/ProfileNode.js:
1108         (WebInspector.ProfileNode.prototype.get startTime):
1109         (WebInspector.ProfileNode.prototype.get endTime):
1110         These can be quickly calculated, so avoid full calculation to grab the values.
1111
1112         * UserInterface/Views/ScriptTimelineView.js:
1113         (WebInspector.ScriptTimelineView.prototype.updateLayout):
1114         Update ranges with a smart helper, instead of blindly doing it and needing refresh.
1115
1116         * UserInterface/Views/ProfileNodeDataGridNode.js:
1117         (WebInspector.ProfileNodeDataGridNode.prototype.get rangeEndTime):
1118         (WebInspector.ProfileNodeDataGridNode.prototype.get data):
1119         (WebInspector.ProfileNodeDataGridNode.prototype.updateRangeTimes):
1120         (WebInspector.ProfileNodeDataGridNode.prototype.set rangeStartTime): Deleted.
1121         (WebInspector.ProfileNodeDataGridNode.prototype.set rangeEndTime): Deleted.
1122         * UserInterface/Views/ScriptTimelineDataGridNode.js:
1123         (WebInspector.ScriptTimelineDataGridNode.prototype.updateRangeTimes):
1124         (WebInspector.ScriptTimelineDataGridNode.prototype.set rangeStartTime): Deleted.
1125         (WebInspector.ScriptTimelineDataGridNode.prototype.set rangeEndTime): Deleted.
1126         When updating the range selection, compare to the last range selection
1127         on this DataGridNode. If the visible portion of this node's time range
1128         changes, we need a refresh. Otherwise, we don't need a refresh.
1129
1130 2014-08-15  Joseph Pecoraro  <pecoraro@apple.com>
1131
1132         Web Inspector: Update Scripts/update-LegacyInspectorBackendCommands.rb for the new generator
1133         https://bugs.webkit.org/show_bug.cgi?id=136006
1134
1135         Reviewed by Timothy Hatcher.
1136
1137         * Scripts/update-LegacyInspectorBackendCommands.rb:
1138         Use the new generator and pass the appropriate flags.
1139
1140         * UserInterface/Protocol/Legacy/6.0/InspectorWebBackendCommands.js:
1141         * UserInterface/Protocol/Legacy/7.0/InspectorWebBackendCommands.js:
1142         Newly generated files using the new generator.
1143
1144         * Versions/Inspector-iOS-6.0.json:
1145         Remove unsupported features.
1146
1147 2014-08-15  Joseph Pecoraro  <pecoraro@apple.com>
1148
1149         Web Inspector: Remove forced layouts during recording caused by striped background element resizing
1150         https://bugs.webkit.org/show_bug.cgi?id=136009
1151
1152         Reviewed by Timothy Hatcher.
1153
1154         We used to manually resize and a custom striped background behind
1155         the timeline tree outline content area. This can happen frequently
1156         during timeline recordings causing forced layouts. We can eliminate
1157         the hack and instead put the stripe background on the tree outline.
1158
1159         * UserInterface/Views/TimelineSidebarPanel.js:
1160         (WebInspector.TimelineSidebarPanel.prototype.updateCustomContentOverflow): Deleted.
1161         * UserInterface/Views/TimelineSidebarPanel.css:
1162         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .content .item > .status > .status-button):
1163         (.sidebar > .panel.navigation.timeline > .content > .stripe-background): Deleted.
1164         (.sidebar > .panel.navigation.timeline.timeline-content-view-showing > .content > .stripe-background): Deleted.
1165         Eliminate the striped background element.
1166
1167         * UserInterface/Views/TimelineView.css:
1168         (.panel.navigation.timeline > .content > .navigation-sidebar-panel-content-tree-outline):
1169         (.panel.navigation.timeline.timeline-content-view-showing > .content > .navigation-sidebar-panel-content-tree-outline):
1170         Give the timeline content tree outlines the striped background.
1171
1172         * UserInterface/Views/NavigationSidebarPanel.js:
1173         (WebInspector.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibility):
1174         (WebInspector.NavigationSidebarPanel.prototype.updateCustomContentOverflow): Deleted.
1175         Remove the now unused updateCustomContentOverflow method.
1176
1177 2014-08-15  Jono Wells  <jonowells@apple.com>
1178
1179         Web Inspector: Inspect Element doesn't always highlight the correct element when inspector is closed before inspecting
1180         https://bugs.webkit.org/show_bug.cgi?id=135995
1181
1182         Reviewed by Joseph Pecoraro.
1183
1184         Change so if an element is inspected via the Inspect Element context menu, selected
1185         node restoration is disallowed until the main resource in the main frame changes.
1186         This way an attempt by a sub-frame will not change the highlighted element in the
1187         Main Frame's DOM tree unexpectedly.
1188
1189         * UserInterface/Controllers/DOMTreeManager.js:
1190         (WebInspector.DOMTreeManager):
1191         (WebInspector.DOMTreeManager.prototype._mainResourceDidChange):
1192         (WebInspector.DOMTreeManager.prototype.inspectElement):
1193
1194 2014-08-15  Brian J. Burg  <burg@cs.washington.edu>
1195
1196         Web Inspector: rewrite CodeGeneratorInspector to be modular and testable
1197         https://bugs.webkit.org/show_bug.cgi?id=131596
1198
1199         Reviewed by Joseph Pecoraro.
1200
1201         Also apply type extraction refactorings to old protocol versions for consistency.
1202
1203         * Versions/Inspector-iOS-6.0.json:
1204         * Versions/Inspector-iOS-7.0.json:
1205
1206 2014-08-15  Timothy Hatcher  <timothy@apple.com>
1207
1208         Web Inspector: Probe details sidebar data grids do not show data
1209         https://bugs.webkit.org/show_bug.cgi?id=135992
1210
1211         Reviewed by Joseph Pecoraro.
1212
1213         * UserInterface/Views/ProbeSetDataGrid.js:
1214         (WebInspector.ProbeSetDataGrid): Make the DataGrid be inline to show the data correctly.
1215
1216 2014-08-15  Timothy Hatcher  <timothy@apple.com>
1217
1218         Web Inspector: Legacy Mac toolbar appearance looks wrong
1219         https://bugs.webkit.org/show_bug.cgi?id=135962
1220
1221         Reviewed by Joseph Pecoraro.
1222
1223         * UserInterface/Views/Toolbar.css:
1224         (body.mac-platform.legacy .toolbar): Don't draw a gradient background when not docked.
1225         Move border-bottom-color from body.mac-platform.legacy.docked .toolbar to here so it
1226         applies all the time as it should have.
1227
1228 2014-08-14  Joseph Pecoraro  <pecoraro@apple.com>
1229
1230         Web Inspector: Dragging Undocked inspector by window title has broken behavior
1231         https://bugs.webkit.org/show_bug.cgi?id=135950
1232
1233         Reviewed by Timothy Hatcher.
1234
1235         * UserInterface/Base/Main.js:
1236         On Mac ports where we the inspector content goes everywhere, window dragging behavior
1237         still exists for the top 22px of the window. So don't do our JavaScript based window
1238         dragging for this special region.
1239
1240         * UserInterface/Models/KeyboardShortcut.js:
1241         (WebInspector.KeyboardShortcut.Modifier.get CommandOrControl):
1242         (WebInspector.KeyboardShortcut.prototype.get displayName):
1243         Instead of calling a host function, use the value already in the frontend.
1244
1245 2014-08-14  Joseph Pecoraro  <pecoraro@apple.com>
1246
1247         Web Inspector: Split console toggle button wrong - Images/Images/SplitToggleUp.svg does not exist
1248         https://bugs.webkit.org/show_bug.cgi?id=135957
1249
1250         Reviewed by Timothy Hatcher.
1251
1252         * UserInterface/Views/LogContentView.js:
1253         (WebInspector.LogContentView):
1254         Wrong image path passed to platformImagePath.
1255
1256 2014-08-14  Joseph Pecoraro  <pecoraro@apple.com>
1257
1258         Web Inspector: Avoid re-binding the same function over and over
1259         https://bugs.webkit.org/show_bug.cgi?id=135949
1260
1261         Reviewed by Timothy Hatcher.
1262
1263         * UserInterface/Controllers/TimelineManager.js:
1264         (WebInspector.TimelineManager.prototype._startAutoCapturing):
1265         (WebInspector.TimelineManager.prototype._stopAutoRecordingSoon):
1266         (WebInspector.TimelineManager.prototype._resetAutoRecordingDeadTimeTimeout):
1267         Stash a bound copy of the function once, and reuse it.
1268
1269 2014-08-14  Joseph Pecoraro  <pecoraro@apple.com>
1270
1271         Web Inspector: Timelines can get caught in requestAnimationFrame loop when not recording
1272         https://bugs.webkit.org/show_bug.cgi?id=135946
1273
1274         Reviewed by Timothy Hatcher.
1275
1276         Each TimelineContentView was listening for the TimelineManager's start/stop
1277         capturing events. However, only the active recording could possibly update.
1278         Likewise, if a pre-existing recording started and stopped we did not properly
1279         stop in the case where we were waiting for an event to update the current time,
1280         which would result in an infinite rAF loop of no updates.
1281
1282         * UserInterface/Models/TimelineRecording.js:
1283         (WebInspector.TimelineRecording.prototype.unloaded):
1284         When a timeline recording is unloaded trigger an event.
1285
1286         * UserInterface/Views/TimelineContentView.js:
1287         (WebInspector.TimelineContentView.prototype._startUpdatingCurrentTime):
1288         Assert we were not already waiting.
1289
1290         (WebInspector.TimelineContentView.prototype._stopUpdatingCurrentTime):
1291         Properly handle the case of starting/stoping an already existing recording
1292         without a new event coming in.
1293
1294         (WebInspector.TimelineContentView.prototype._recordingTimesUpdated):
1295         (WebInspector.TimelineContentView.prototype._recordingReset):
1296         Convert to a boolean instead of deleting state.
1297
1298         (WebInspector.TimelineContentView.prototype._recordingUnloaded):
1299         Stop listening to timeline manager events that no longer affect unloaded recordings.
1300
1301 2014-08-13  Jono Wells  <jonowells@apple.com>
1302
1303         Web Inspector: eslint configuration should be stored as .eslintrc
1304         https://bugs.webkit.org/show_bug.cgi?id=135916
1305
1306         .eslintrc file added to allow for ESLint solutions, within editors and otherwise,
1307         to be automatically configured based on the WebKit JavaScript coding style. The
1308         initial file is incomplete.
1309
1310         Reviewed by Joseph Pecoraro.
1311
1312         * .eslintrc: Added.
1313         * External/.eslintrc: Added.
1314
1315 2014-08-13  Timothy Hatcher  <timothy@apple.com>
1316
1317         Web Inspector: Missing semicolon after console.assert in TimelineSidebarPanel.js
1318         https://bugs.webkit.org/show_bug.cgi?id=135917
1319
1320         Reviewed by Joseph Pecoraro.
1321
1322         * UserInterface/Views/TimelineSidebarPanel.js:
1323
1324 2014-08-13  Joseph Pecoraro  <pecoraro@apple.com>
1325
1326         Web Inspector: Inline DataGrid inside details sidebar has double thick top border with legacy styles
1327         https://bugs.webkit.org/show_bug.cgi?id=135894
1328
1329         Reviewed by Timothy Hatcher.
1330
1331         * UserInterface/Views/DetailsSection.css:
1332         (body.mac-platform.legacy .details-section:not(.collapsed) .data-grid.inline):
1333         In legacy styles the details-section header always has a 1px bottom border.
1334         In all styles, an inline data grid had a 1px border everywhere. So, handle
1335         this specific case by removing the top border of an inline data grid
1336         that is inside an expanded details section.
1337
1338 2014-08-13  Joseph Pecoraro  <pecoraro@apple.com>
1339
1340         Web Inspector: "No Filter Results" view only shows once, does not show again
1341         https://bugs.webkit.org/show_bug.cgi?id=135892
1342
1343         Reviewed by Timothy Hatcher.
1344
1345         * UserInterface/Views/NavigationSidebarPanel.js:
1346         (WebInspector.NavigationSidebarPanel.prototype.showEmptyContentPlaceholder):
1347         We were checking at the wrong level for a parent. Check if the root
1348         placeholder element has a parent or not.
1349
1350 2014-08-13  Joseph Pecoraro  <pecoraro@apple.com>
1351
1352         Web Inspector: Incorrect border colors in event listeners sections in details sidebar
1353         https://bugs.webkit.org/show_bug.cgi?id=135891
1354
1355         Reviewed by Timothy Hatcher.
1356
1357         * UserInterface/Views/DetailsSection.css:
1358         (.details-section .details-section > .header):
1359         (.details-section .details-section:not(.collapsed) > .header):
1360         Remove box-shadow and replace with a bottom border.
1361
1362         (body.mac-platform.legacy .details-section .details-section.collapsed > .header):
1363         (.details-section .details-section.collaspsed > .header): Deleted.
1364         Collapsed was spelled incorrectly so this was not applying properly before.
1365         But correct this for legacy because legacy still uses a box-shadow.
1366
1367 2014-08-13  Joseph Pecoraro  <pecoraro@apple.com>
1368
1369         Web Inspector: Timeline Close buttons can use polish for new and legacy styles
1370         https://bugs.webkit.org/show_bug.cgi?id=135870
1371
1372         Reviewed by Timothy Hatcher.
1373
1374         * UserInterface/Images/Legacy/Close.svg:
1375         Ensure this has fill colors in tree selections.
1376
1377         * UserInterface/Views/TimelineSidebarPanel.css:
1378         (.sidebar > .panel.navigation.timeline > .timelines-content .close-button):
1379         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .timelines-content .close-button):
1380         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .content .item > .status > .status-button):
1381         Size the close-button for the top overviews differently in new styles (14x14) and legacy (12x12).
1382
1383 2014-08-13  Timothy Hatcher  <timothy@apple.com>
1384
1385         Web Inspector: Workaround a NSWindow change to the title bar.
1386         https://bugs.webkit.org/show_bug.cgi?id=135880
1387
1388         Reviewed by Joseph Pecoraro.
1389
1390         * UserInterface/Base/Main.js:
1391         (WebInspector._updateToolbarHeight): Don't call in legacy mode.
1392
1393         * UserInterface/Views/DashboardContainerView.css:
1394         (.toolbar .dashboard-container):
1395         (.toolbar .dashboard):
1396         Drive-by fix some errant drop-shadows. The transparent border was pushing the inset top
1397         drop shadow down when it shouldn't. Remove duplicate background and shadow.
1398
1399         * UserInterface/Views/Main.css:
1400         (body): Set the background white, never needs to be transparent now.
1401         (body.mac-platform.legacy:not(.docked)): Set background to transparent when not docked in legacy.
1402         (body.docked.bottom): Update border color.
1403         (body.docked.right): Ditto.
1404         (body.docked.bottom.mac-platform.legacy): Keep old border color.
1405         (body.docked.right.mac-platform.legacy): Ditto.
1406
1407         * UserInterface/Views/Toolbar.css:
1408         (.toolbar): Set a default border and background gradient.
1409         (body.window-inactive .toolbar): No gradient but use a solid color when inactive.
1410         (body.mac-platform:not(.legacy):not(.docked) .toolbar): Padding on the top for the title bar.
1411         (body.mac-platform:not(.legacy):not(.docked) .toolbar.icon-and-label-vertical): Account for title bar height.
1412         (body.mac-platform:not(.legacy):not(.docked) .toolbar.icon-and-label-vertical.small-size): Ditto.
1413         (body.mac-platform:not(.legacy):not(.docked) .toolbar.icon-only): Ditto.
1414         (body.mac-platform:not(.legacy):not(.docked) .toolbar.label-only): Ditto.
1415         (body.mac-platform.legacy .toolbar): No inset shadow in legacy when not docked.
1416         (body.mac-platform.legacy.docked .toolbar): Restore legacy border color.
1417         (body.mac-platform.legacy:not(.docked) .toolbar .item.button > .label): Only disable sub-pixel antialiasing on legacy!
1418         (body.mac-platform.legacy.window-inactive .toolbar): Restore legacy border color.
1419
1420 2014-08-13  Timothy Hatcher  <timothy@apple.com>
1421
1422         Web Inspector: Restore Helvetica as the dashboard font in legacy mode
1423         https://bugs.webkit.org/show_bug.cgi?id=135886
1424
1425         Reviewed by Joseph Pecoraro.
1426
1427         * UserInterface/Views/DefaultDashboardView.css:
1428         (body.mac-platform.legacy .toolbar .dashboard.default > .item):
1429
1430 2014-08-12  Joseph Pecoraro  <pecoraro@apple.com>
1431
1432         Web Inspector: Timeline record content view close button does not work after scrolling, invisible scrollbar
1433         https://bugs.webkit.org/show_bug.cgi?id=135863
1434
1435         Reviewed by Timothy Hatcher.
1436
1437         A workaround is to not have position:relative content inside of
1438         scrollable region. Turns out this was only done in two places,
1439         and I do not see any absolutely positioned content in navigation
1440         sidebar content tree outlines. This also fixes clicking on the
1441         reload button if you've scrolled the Resources sidebar. 
1442
1443         * UserInterface/Views/NavigationSidebarPanel.css:
1444         (.navigation-sidebar-panel-content-tree-outline .children): Deleted.
1445         (.navigation-sidebar-panel-content-tree-outline .item): Deleted.
1446
1447 2014-08-12  Joseph Pecoraro  <pecoraro@apple.com>
1448
1449         Web Inspector: Remove unused variable in Platform.js
1450         https://bugs.webkit.org/show_bug.cgi?id=135869
1451
1452         Reviewed by Timothy Hatcher.
1453
1454         * UserInterface/Base/Platform.js:
1455
1456 2014-08-12  Joseph Pecoraro  <pecoraro@apple.com>
1457
1458         Web Inspector: Timeline selection range creation does not work when clicking event bubble or near bottom of overview
1459         https://bugs.webkit.org/show_bug.cgi?id=135849
1460
1461         Reviewed by Timothy Hatcher.
1462
1463         Click events on elements in the graph container (event bubbles) or
1464         in the scroll container (bottom 16px) were becoming the event targets.
1465         As siblings of the ruler, the dispatch would not go through the ruler.
1466         The ruler was supposed to be overlaying everything in the overview,
1467         so give the ruler a z-index so it really is overlaying elements.
1468
1469         * UserInterface/Views/TimelineRuler.css:
1470         (.timeline-ruler):
1471
1472 2014-08-12  Joseph Pecoraro  <pecoraro@apple.com>
1473
1474         Web Inspector: GoToLine dialog clear text button looks poor
1475         https://bugs.webkit.org/show_bug.cgi?id=135828
1476
1477         Reviewed by Timothy Hatcher.
1478
1479         Legacy/CloseWhite.svg was not used, but in the case where the white
1480         close button is needed the thicker bars looks better. Re-use the
1481         Legacy image as the default CloseWhite.svg.
1482
1483         * UserInterface/Images/CloseWhite.svg:
1484         * UserInterface/Images/Legacy/CloseWhite.svg: Removed.
1485
1486 2014-08-12  Joseph Pecoraro  <pecoraro@apple.com>
1487
1488         Web Inspector: Easier Way to go back to the Timeline Overviews
1489         https://bugs.webkit.org/show_bug.cgi?id=135827
1490
1491         Reviewed by Timothy Hatcher.
1492
1493         * Localizations/en.lproj/localizedStrings.js:
1494         Added new tooltip UIString.
1495
1496         * UserInterface/Images/Close.svg:
1497         * UserInterface/Images/CloseLarge.svg:
1498         * UserInterface/Images/Legacy/Close.svg:
1499         Add "stroked" class so the buttons can fill with white on selected rows.
1500         Also re-center the non-legacy images horizontally.
1501
1502         * UserInterface/Views/GeneralTreeElement.js:
1503         (WebInspector.GeneralTreeElement.prototype.set status):
1504         Do not recreate elements if the status did not change.
1505
1506         * UserInterface/Views/LayoutTimelineView.js:
1507         (WebInspector.LayoutTimelineView):
1508         (WebInspector.LayoutTimelineView.prototype._treeElementDeselected):
1509         (WebInspector.LayoutTimelineView.prototype._treeElementSelected):
1510         (WebInspector.LayoutTimelineView.prototype._updateTreeElementWithCloseButton):
1511         (WebInspector.LayoutTimelineView.prototype._closeStatusButtonClicked):
1512         * UserInterface/Views/NetworkTimelineView.js:
1513         (WebInspector.NetworkTimelineView):
1514         (WebInspector.NetworkTimelineView.prototype._treeElementDeselected):
1515         (WebInspector.NetworkTimelineView.prototype._treeElementSelected):
1516         (WebInspector.NetworkTimelineView.prototype._updateTreeElementWithCloseButton):
1517         (WebInspector.NetworkTimelineView.prototype._closeStatusButtonClicked):
1518         * UserInterface/Views/OverviewTimelineView.js:
1519         (WebInspector.OverviewTimelineView.prototype._treeElementDeselected):
1520         (WebInspector.OverviewTimelineView.prototype._treeElementSelected):
1521         (WebInspector.OverviewTimelineView.prototype._updateTreeElementWithCloseButton):
1522         (WebInspector.OverviewTimelineView.prototype._closeStatusButtonClicked):
1523         * UserInterface/Views/ScriptTimelineView.js:
1524         (WebInspector.ScriptTimelineView):
1525         (WebInspector.ScriptTimelineView.prototype._treeElementDeselected):
1526         (WebInspector.ScriptTimelineView.prototype._treeElementSelected):
1527         (WebInspector.ScriptTimelineView.prototype._updateTreeElementWithCloseButton):
1528         (WebInspector.ScriptTimelineView.prototype._closeStatusButtonClicked):
1529         Provide select/deselect handlers to show/hide the close status bar button
1530         when selecting a row that shows a non-Timeline content view. Currently the
1531         only content views the tree elements can show are Resource views, so the
1532         tooltip is the same everywhere.
1533
1534 2014-08-12  Timothy Hatcher  <timothy@apple.com>
1535
1536         Web Inspector: Expect to see top level JavaScript function profiler details for event handlers in timeline
1537         https://bugs.webkit.org/show_bug.cgi?id=132109
1538
1539         Reviewed by Joseph Pecoraro.
1540
1541         * UserInterface/Views/ScriptTimelineView.js:
1542         (WebInspector.ScriptTimelineView.prototype._processPendingRecords): Don't promote root node children if
1543         there is only one child.
1544
1545 2014-08-11  Brian J. Burg  <burg@cs.washington.edu>
1546
1547         Web Inspector: show a replay dashboard when capturing or replaying
1548         https://bugs.webkit.org/show_bug.cgi?id=135170
1549
1550         Reviewed by Timothy Hatcher.
1551
1552         This patch adds a replay dashboard with record/play/pause buttons. It
1553         is shown automatically when the user starts capturing an execution from
1554         the replay menu in the Timelines sidebar panel.
1555
1556         * UserInterface/Base/Main.js:
1557         (WebInspector.loaded):
1558         (WebInspector._captureDidStart):
1559         * UserInterface/Controllers/DashboardManager.js:
1560         (WebInspector.DashboardManager):
1561         * UserInterface/Images/ReplayPauseButton.svg: Added.
1562         * UserInterface/Images/ReplayPlayButton.svg: Added.
1563         * UserInterface/Images/ReplayRecordingButton.svg: Added.
1564         * UserInterface/Main.html:
1565         * UserInterface/Models/ReplayDashboard.js: Copied from Source/WebInspectorUI/UserInterface/Controllers/DashboardManager.js.
1566         (WebInspector.ReplayDashboard):
1567         * UserInterface/Views/DashboardView.js:
1568         (WebInspector.DashboardView):
1569         * UserInterface/Views/ReplayDashboardView.css: Copied from Source/WebInspectorUI/UserInterface/Controllers/DashboardManager.js.
1570         (.toolbar .dashboard.replay):
1571         (.toolbar .dashboard.replay div.navigation-bar):
1572         (.toolbar .dashboard.replay .item.button > .glyph):
1573         (.toolbar.label-only .dashboard.replay .item.button > .glyph):
1574         * UserInterface/Views/ReplayDashboardView.js: Added.
1575         (WebInspector.ReplayDashboardView):
1576         (WebInspector.ReplayDashboardView.prototype._captureButtonItemClicked):
1577         (WebInspector.ReplayDashboardView.prototype._replayButtonItemClicked):
1578         (WebInspector.ReplayDashboardView.prototype._captureStarted):
1579         (WebInspector.ReplayDashboardView.prototype._captureStopped):
1580         (WebInspector.ReplayDashboardView.prototype._playbackStarted):
1581         (WebInspector.ReplayDashboardView.prototype._playbackPaused):
1582         (WebInspector.ReplayDashboardView.prototype._playbackFinished):
1583
1584 2014-08-08  Brian J. Burg  <burg@cs.washington.edu>
1585
1586         Web Inspector: DebuggerManager commands should return promises
1587         https://bugs.webkit.org/show_bug.cgi?id=135690
1588
1589         Reviewed by Timothy Hatcher.
1590
1591         Convert the existing debugger commands to return promises. This
1592         requires separately waiting for protocol command's promise to be
1593         fulfilled, as well as waiting for the appropriate DebuggerManager
1594         event. If the protocol command promise is rejected, tear down the
1595         single-fire event listener.
1596
1597         * UserInterface/Controllers/DebuggerManager.js:
1598         (WebInspector.DebuggerManager.prototype.pause):
1599         (WebInspector.DebuggerManager.prototype.resume):
1600         (WebInspector.DebuggerManager.prototype.stepOver):
1601         (WebInspector.DebuggerManager.prototype.stepInto):
1602         (WebInspector.DebuggerManager.prototype.stepOut):
1603         * UserInterface/Controllers/ReplayManager.js: Use the promise-based API.
1604         (WebInspector.ReplayManager.prototype._suppressBreakpointsAndResumeIfNeeded):
1605
1606 2014-08-11  Timothy Hatcher  <timothy@apple.com>
1607
1608         Web Inspector: Update folder icons
1609         https://bugs.webkit.org/show_bug.cgi?id=135808
1610
1611         Reviewed by Joseph Pecoraro.
1612
1613         * UserInterface/Images/FolderGeneric.png: Updated.
1614         * UserInterface/Images/FolderGeneric@2x.png: Updated.
1615
1616 2014-08-11  Timothy Hatcher  <timothy@apple.com>
1617
1618         Web Inspector: DataGrid and its clients are a cluster-cuss of styles
1619         https://bugs.webkit.org/show_bug.cgi?id=135788
1620
1621         Clean up DataGrid and its subclasses and client styles.
1622
1623         Reviewed by Joseph Pecoraro.
1624
1625         * Localizations/en.lproj/localizedStrings.js:
1626         * UserInterface/Views/ApplicationCacheFrameContentView.css:
1627         (.content-view.application-cache-frame > .data-grid):
1628         * UserInterface/Views/CookieStorageContentView.css:
1629         (.content-view.cookie-storage > .data-grid):
1630         * UserInterface/Views/DOMStorageContentView.css:
1631         (.content-view.dom-storage > .data-grid):
1632         * UserInterface/Views/DOMTreeDataGrid.css:
1633         (.dom-tree-data-grid .data-grid):
1634         (.dom-tree-data-grid .name-column .icon):
1635         * UserInterface/Views/DOMTreeDataGrid.js:
1636         (WebInspector.DOMTreeDataGrid):
1637         * UserInterface/Views/DataGrid.css:
1638         (.data-grid):
1639         (.data-grid table):
1640         (.data-grid .data-container):
1641         (.data-grid.inline):
1642         (.data-grid th):
1643         (.data-grid :-webkit-any(th, td):not(:last-child)):
1644         (.data-grid th.sortable:active):
1645         (.data-grid th:-webkit-any(.sort-ascending, .sort-descending)):
1646         (.data-grid table.data):
1647         (.data-grid td):
1648         (.data-grid:focus tr.selected td:not(:last-child)):
1649         (body.mac-platform.legacy .data-grid:focus tr.selected td:not(:last-child)):
1650         (.data-grid :-webkit-any(th, td) > div):
1651         (.data-grid th:-webkit-any(.sort-ascending, .sort-descending) > div:first-child):
1652         (.data-grid th.sort-ascending > div:first-child::after):
1653         (.data-grid th.sort-descending > div:first-child::after):
1654         (.data-grid td .subtitle):
1655         (.data-grid td .subtitle::before):
1656         (.data-grid:focus tr.selected td .subtitle):
1657         (.data-grid td.error):
1658         (.data-grid tr.selected td.error):
1659         (.data-grid td .icon):
1660         (.data-grid td .go-to-arrow):
1661         (.data-grid tr:-webkit-any(.selected, :hover) .go-to-arrow):
1662         * UserInterface/Views/DatabaseContentView.css:
1663         (.storage-view):
1664         * UserInterface/Views/DatabaseTableContentView.css:
1665         (.content-view.database-table > .data-grid):
1666         * UserInterface/Views/DetailsSection.css:
1667         (.details-section > .content .data-grid):
1668         * UserInterface/Views/IndexedDatabaseObjectStoreContentView.css:
1669         (.content-view.indexed-database-object-store > .data-grid):
1670         * UserInterface/Views/LayerTreeDataGridNode.js:
1671         (WebInspector.LayerTreeDataGridNode.prototype._makeNameCell):
1672         (WebInspector.LayerTreeDataGridNode.prototype._updateNameCellData):
1673         * UserInterface/Views/LayerTreeSidebarPanel.css:
1674         (.layer-tree.panel .data-grid):
1675         (.layer-tree.panel .name-column .icon):
1676         (.layer-tree.panel tr.reflection .name-column .icon):
1677         (.layer-tree.panel tr.pseudo-element .name-column .icon):
1678         (.layer-tree.panel .name-column .reflection):
1679         (.layer-tree.panel tr.selected .name-column .reflection):
1680         (.layer-tree.panel .bottom-bar):
1681         (body.mac-platform.legacy .layer-tree.panel .bottom-bar):
1682         (.layer-tree.panel .bottom-bar > div):
1683         (body.mac-platform.legacy .layer-tree.panel .bottom-bar > div):
1684         (body.mac-platform.legacy .layer-tree-popover):
1685         * UserInterface/Views/LayerTreeSidebarPanel.js:
1686         (WebInspector.LayerTreeSidebarPanel):
1687         (WebInspector.LayerTreeSidebarPanel.prototype._buildLayerInfoSection):
1688         (WebInspector.LayerTreeSidebarPanel.prototype._buildDataGridSection):
1689         (WebInspector.LayerTreeSidebarPanel.prototype._buildBottomBar):
1690         (WebInspector.LayerTreeSidebarPanel.prototype._updateMetrics):
1691         * UserInterface/Views/LegacyJavaScriptProfileView.css:
1692         (.content-view.profile-view > .data-grid):
1693         * UserInterface/Views/LegacyProfileView.css:
1694         * UserInterface/Views/LogContentView.css:
1695         (.console-message .bubble):
1696         * UserInterface/Views/NetworkTimelineView.css:
1697         (.timeline-view.network > .data-grid):
1698         * UserInterface/Views/OverviewTimelineView.css:
1699         (.timeline-view.overview > .timeline-ruler > .header):
1700         (.timeline-view.overview > .data-grid):
1701         * UserInterface/Views/OverviewTimelineView.js:
1702         * UserInterface/Views/ProbeDetailsSidebarPanel.css:
1703         (.details-section.probe-set .options > .probe-add):
1704         (.popover .probe-popover):
1705         * UserInterface/Views/ProbeSetDataGrid.css:
1706         (.details-section.probe-set .data-grid tr.past-value td):
1707         (.details-section.probe-set .data-grid > td.unknown-value):
1708         (.details-section.probe-set .data-grid tr.revealed.highlighted):
1709         (.details-section.probe-set .data-grid tr.separator):
1710         (.details-section.probe-set .data-grid > tr.data-updated):
1711         (.details-section.probe-set .data-grid .selected .section *):
1712         (.details-section.probe-set .data-grid .selected td.unknown-value):
1713         (.details-section.probe-set .data-grid .section):
1714         * UserInterface/Views/QuickConsole.css:
1715         (.quick-console):
1716         * UserInterface/Views/TimelineDataGrid.css:
1717         (.data-grid.timeline th):
1718         (.data-grid.timeline > .navigation-bar-container > .navigation-bar):
1719         * UserInterface/Views/TimelineRuler.css:
1720         (.timeline-ruler > .header):
1721         (.timeline-ruler > .header > .divider):
1722
1723 2014-08-11  Brent Fulgham  <bfulgham@apple.com>
1724
1725         [Win] Adjust build script for Windows production build.
1726         https://bugs.webkit.org/show_bug.cgi?id=135806
1727         <rdar://problem/17978299>
1728
1729         Reviewed by Timothy Hatcher.
1730
1731         * WebInspectorUI.vcxproj/WebInspectorUI.make: Make sure target for
1732         xcopy operation exists.
1733         * WebInspectorUI.vcxproj/WebInspectorUI.proj: Don't create directories
1734         we don't need, make sure the target location exists before we build.
1735         * WebInspectorUI.vcxproj/build-webinspectorui.pl: Make sure that
1736         production builds get the intermediary command files from the
1737         right place.
1738
1739 2014-08-11  Brian J. Burg  <burg@cs.washington.edu>
1740
1741         Web Inspector: Add a helper to avoid leaking single-fire event listeners in Promise chains
1742         https://bugs.webkit.org/show_bug.cgi?id=135772
1743
1744         Reviewed by Timothy Hatcher.
1745
1746         A common pattern when working with promise chains is to convert an event
1747         handler into a promise by using a single-fire event listener with the
1748         resolve continuation as the callback. This is fine if the event fires;
1749         if it doesn't fire, then the event emitter permanently keeps a reference to the
1750         this-object and the callback.
1751
1752         This patch adds EventListener, a proxy object for events that can be manipulated
1753         from multiple promise callback functions. If a promise is rejected, the catch
1754         block can disconnect any event listeners set up earlier in the promise chain.
1755
1756         This patch also reimplements EventListenerSet to use multiple EventListeners,
1757         since they share the same logic to uniformly handle Inspector and DOM events.
1758
1759         Test: inspector/event-listener.html
1760         Test: inspector/event-listener-set.html
1761
1762         * UserInterface/Base/EventListener.js: Added.
1763         (WebInspector.EventListener):
1764         (WebInspector.EventListener.prototype.this._callback):
1765         (WebInspector.EventListener.prototype.connect):
1766         (WebInspector.EventListener.prototype.disconnect):
1767         * UserInterface/Base/EventListenerSet.js: Update license block.
1768         (WebInspector.EventListenerSet.prototype.register):
1769         (WebInspector.EventListenerSet.prototype.install):
1770         (WebInspector.EventListenerSet.prototype.uninstall):
1771         * UserInterface/Main.html: Include EventListener.
1772         * UserInterface/Test.html: Include EventListener and EventListenerSet.
1773
1774 2014-08-10  Timothy Hatcher  <timothy@apple.com>
1775
1776         Web Inspector: new glyphs are visible on OS X 10.9 builds
1777         https://bugs.webkit.org/show_bug.cgi?id=135743
1778
1779         Reviewed by Joseph Pecoraro.
1780
1781         * UserInterface/Images/Legacy/UserInputPrompt.svg: Removed.
1782         * UserInterface/Images/Legacy/UserInputPromptPrevious.svg: Removed.
1783         * UserInterface/Images/Legacy/UserInputResult.svg: Removed.
1784         Removed images that were not used.
1785
1786         * UserInterface/Views/DashboardContainerView.css:
1787         (body.mac-platform.legacy .dashboard-container .advance-arrow):
1788         * UserInterface/Views/DebuggerDashboardView.js:
1789         (WebInspector.DebuggerDashboardView):
1790         * UserInterface/Views/FolderIcon.css:
1791         (body.mac-platform.legacy .folder-icon .icon):
1792         * UserInterface/Views/HierarchicalPathComponent.css:
1793         (body.mac-platform.legacy .hierarchical-path-component > .selector-arrows):
1794         * UserInterface/Views/LogContentView.js:
1795         (WebInspector.LogContentView):
1796         Use legacy images.
1797
1798         * UserInterface/Views/NavigationSidebarPanel.css:
1799         (.navigation-sidebar-panel-content-tree-outline:focus .item.selected .subtitle):
1800         Fix color for selected subtitle.
1801
1802         * UserInterface/Views/TimelineSidebarPanel.js:
1803         (WebInspector.TimelineSidebarPanel):
1804         Use legacy images.
1805
1806 2014-08-09  Brian J. Burg  <burg@cs.washington.edu>
1807
1808         Web Inspector: TimelineManager should reuse empty recordings
1809         https://bugs.webkit.org/show_bug.cgi?id=135749
1810
1811         Reviewed by Timothy Hatcher.
1812
1813         Check whether the recording is empty before creating a new one.
1814
1815         * UserInterface/Controllers/TimelineManager.js:
1816         (WebInspector.TimelineManager.prototype._loadNewRecording):
1817         * UserInterface/Models/TimelineRecording.js:
1818         (WebInspector.TimelineRecording.prototype.isEmpty):
1819         (WebInspector.TimelineRecording.prototype.unloaded):
1820
1821 2014-08-08  Brian J. Burg  <burg@cs.washington.edu>
1822
1823         Web Inspector: add debugging flag to InspectorTest for unbuffered logging to stderr
1824         https://bugs.webkit.org/show_bug.cgi?id=135726
1825
1826         Reviewed by Timothy Hatcher.
1827
1828         Added a flag for debugging inspector tests which will synchronously log messages.
1829         This avoids failure modes that prevent logging from being added to the test page.
1830
1831         * UserInterface/Base/Test.js:
1832         (InspectorTest.debugLog):
1833         (InspectorTest.addResult):
1834
1835 2014-08-08  Joseph Pecoraro  <pecoraro@apple.com>
1836
1837         Web Inspector: When Switching Recordings, the UI datagrids do not update to match selection
1838         https://bugs.webkit.org/show_bug.cgi?id=135764
1839
1840         Reviewed by Timothy Hatcher.
1841
1842         * UserInterface/Views/TimelineSidebarPanel.js:
1843         When changing the activeContentView trigger an update of the datagrids by
1844         re-applying the filter, which will be different now that the view is different.
1845
1846 2014-08-08  Joseph Pecoraro  <pecoraro@apple.com>
1847
1848         Web Inspector: Uncaught Exception opening Web Inspector - TypeError: undefined is not a function - candidateObjectCookie.every
1849         https://bugs.webkit.org/show_bug.cgi?id=135762
1850
1851         Reviewed by Timothy Hatcher.
1852
1853         * UserInterface/Views/NavigationSidebarPanel.js:
1854         (WebInspector.NavigationSidebarPanel.prototype.treeElementMatchesCookie):
1855         Fix a typo, the wrong object was being used.
1856
1857 2014-08-07  Brian J. Burg  <burg@cs.washington.edu>
1858
1859         REGRESSION(r172094): timeline views are blank after reloading in some situations
1860         https://bugs.webkit.org/show_bug.cgi?id=135742
1861
1862         Reviewed by Timothy Hatcher.
1863
1864         Address various bugs that cause the wrong timeline content views to appear when
1865         starting a recording by reloading the inspected page. Fix other small oversights
1866         that were encountered in the sidebar-based view state restoration code.
1867
1868         * UserInterface/Models/TimelineRecording.js:
1869         (WebInspector.TimelineRecording.prototype.saveIdentityToCookie): Add a dummy implementation.
1870
1871         * UserInterface/Views/NavigationSidebarPanel.js:
1872         (WebInspector.NavigationSidebarPanel.prototype.treeElementMatchesCookie):
1873         This code erroneously matches any tree element whose represented object's
1874         saveIdentityToCookie function produces an empty cookie.
1875
1876         * UserInterface/Views/TimelineContentView.js:
1877         (WebInspector.TimelineContentView.prototype._showTimelineView): Add an assertion
1878         that will find mismatches between represented objects of the TimelineContentView
1879         and TimelineViews.
1880
1881         * UserInterface/Views/TimelineSidebarPanel.js:
1882         (WebInspector.TimelineSidebarPanel.prototype.restoreStateFromCookie): Don't call
1883         the superclass's implementation, since we do not want to perform a relaxed match
1884         against any of our tree elements. The only thing that can be restored across reopen
1885         is a selected timeline tree element, which is already handled by this override.
1886
1887 2014-08-07  Joseph Pecoraro  <pecoraro@apple.com>
1888
1889         Web Inspector: Fix accidental always true comparison
1890         https://bugs.webkit.org/show_bug.cgi?id=135741
1891
1892         Reviewed by Timothy Hatcher.
1893
1894         Remove accidental "!" that would always cause this comparison to succeed.
1895
1896         * UserInterface/Views/OverviewTimelineView.js:
1897         (WebInspector.OverviewTimelineView.prototype.updateLayout):
1898
1899 2014-08-07  Joseph Pecoraro  <pecoraro@apple.com>
1900
1901         Web Inspector: Timeline Filter Bars are not appearing at all
1902         https://bugs.webkit.org/show_bug.cgi?id=135740
1903
1904         Reviewed by Timothy Hatcher.
1905
1906         * UserInterface/Views/TimelineDataGrid.css:
1907         (.data-grid.timeline.has-non-default-filter > .navigation-bar-container):
1908         (.data-grid.timeline > .navigation-bar-container > .navigation-bar):
1909         (body.mac-platform.legacy .data-grid.timeline > .navigation-bar-container > .navigation-bar):
1910         Update the positioning and height for non-legacy because the console is now taller.
1911
1912         * UserInterface/Views/ScopeBar.js:
1913         (WebInspector.ScopeBar.prototype.hasNonDefaultItemSelected):
1914         Helper to know if there is a non-default filter.
1915
1916         * UserInterface/Views/TimelineDataGrid.js:
1917         (WebInspector.TimelineDataGrid.prototype.treeElementMatchesActiveScopeFilters):
1918         (WebInspector.TimelineDataGrid.prototype._scopeBarSelectedItemsDidChange):
1919         Update scope bar visibility. If non-default we want to always show it.
1920         
1921         (WebInspector.TimelineDataGrid.prototype._updateScopeBarForcedVisibility):
1922         If there is a non-default filter, force showing the bar.
1923
1924 2014-08-07  Joseph Pecoraro  <pecoraro@apple.com>
1925
1926         Web Inspector: breakpoints enabled state is not persisted across re-opening the inspector
1927         https://bugs.webkit.org/show_bug.cgi?id=135745
1928
1929         Reviewed by Timothy Hatcher.
1930
1931         When restoring breakpoints when the inspector is initializing, do not
1932         let setting these breakpoints automatically enable breakpoints. We should
1933         respect the setting in this case.
1934
1935         * UserInterface/Controllers/DebuggerManager.js:
1936         (WebInspector.DebuggerManager.restoreBreakpointsSoon):
1937         (WebInspector.DebuggerManager):
1938
1939 2014-08-07  Timothy Hatcher  <timothy@apple.com>
1940
1941         Web Inspector: Combine and minify Esprima
1942         https://bugs.webkit.org/show_bug.cgi?id=135728
1943
1944         Reviewed by Joseph Pecoraro.
1945
1946         * Scripts/combine-resources.pl:
1947         * Scripts/copy-user-interface-resources.pl:
1948         * UserInterface/External/Esprima/LICENSE: Added.
1949
1950 2014-08-07  Timothy Hatcher  <timothy@apple.com>
1951
1952         Fix regression where tree outline keyboard navigation is broken.
1953
1954         https://bugs.webkit.org/show_bug.cgi?id=135718
1955
1956         Reviewed by Joseph Pecoraro.
1957
1958         * UserInterface/Views/TreeOutline.js:
1959         (TreeElement.prototype.revealed): Fix the check for currentAncestor.hidden.
1960
1961 2014-08-07  Timothy Hatcher  <timothy@apple.com>
1962
1963         Web Inspector: Filter bar text and icon are positioned too low and tight
1964         https://bugs.webkit.org/show_bug.cgi?id=135723
1965
1966         Reviewed by Joseph Pecoraro.
1967
1968         * UserInterface/Views/FilterBar.css:
1969         (.filter-bar > input[type="search"]):
1970         (.filter-bar > input[type="search"]::-webkit-search-decoration):
1971         * UserInterface/Views/SearchBar.css:
1972         (.search-bar > input[type="search"]):
1973
1974 2014-08-07  Timothy Hatcher  <timothy@apple.com>
1975
1976         Web Inspector: Dashboard error and warning icons should be filled when enabled
1977         https://bugs.webkit.org/show_bug.cgi?id=135725
1978
1979         Reviewed by Joseph Pecoraro.
1980
1981         * UserInterface/Images/ErrorsEnabled.svg:
1982         * UserInterface/Images/IssuesEnabled.svg:
1983
1984 2014-08-07  Joseph Pecoraro  <pecoraro@apple.com>
1985
1986         Web Inspector: Dashboard contents shift when window changes active state
1987         https://bugs.webkit.org/show_bug.cgi?id=135724
1988
1989         Reviewed by Timothy Hatcher.
1990
1991         The container was getting a 1px border when inactive and none when active.
1992         Give it a transparent border when active so contents don't change size.
1993
1994         * UserInterface/Views/DashboardContainerView.css:
1995         (.toolbar .dashboard-container):
1996
1997 2014-08-07  Timothy Hatcher  <timothy@apple.com>
1998
1999         Fix reference to missing CloseTimeline.svg image.
2000
2001         Rubber-stamped by Joseph Pecoraro.
2002
2003         * UserInterface/Views/TimelineSidebarPanel.js:
2004         (WebInspector.TimelineSidebarPanel.createTimelineTreeElement): Use CloseLarge.svg instead.
2005
2006 2014-08-07  Brent Fulgham  <bfulgham@apple.com>
2007
2008         [Win] Unreviewed build fix.
2009
2010         Add a WebInspectorUI.proj file for use with MSBuild utility.
2011
2012         * WebInspectorUI.vcxproj/WebInspectorUI.proj: Added.
2013
2014 2014-08-07  Benjamin Poulain  <bpoulain@apple.com>
2015
2016         Get rid of INPUT_SPEECH
2017         https://bugs.webkit.org/show_bug.cgi?id=135672
2018
2019         Reviewed by Andreas Kling.
2020
2021         * UserInterface/Models/CSSKeywordCompletions.js:
2022
2023 2014-08-07  Joseph Pecoraro  <pecoraro@apple.com>
2024
2025         Web Inspector: Dragging selection window when mouse goes out of window bounds does not behave as expected
2026         https://bugs.webkit.org/show_bug.cgi?id=135372
2027
2028         Reviewed by Timothy Hatcher.
2029
2030         Constrain move selection window dragging to the ruler bounds
2031         based on the mouse down position on the drag window.
2032
2033         * UserInterface/Views/TimelineRuler.js:
2034         (WebInspector.TimelineRuler.prototype._handleMouseDown):
2035         (WebInspector.TimelineRuler.prototype._handleMouseMove):
2036         (WebInspector.TimelineRuler.prototype._handleMouseUp):
2037
2038 2014-08-07  Timothy Hatcher  <timothy@apple.com>
2039
2040         Web Inspector: Update glyphs to be more like Xcode 6
2041         https://bugs.webkit.org/show_bug.cgi?id=135705
2042
2043         Reviewed by Joseph Pecoraro.
2044
2045         * Localizations/en.lproj/localizedStrings.js: Updated.
2046
2047         * UserInterface/Base/ImageUtilities.js:
2048         (platformImagePath): Added.
2049         (generateEmbossedImages.generateImage):
2050         Bump the base image version. Helper function. Use isLegacyMacOS.
2051
2052         * UserInterface/Base/Main.js:
2053         (WebInspector.contentLoaded):
2054         (WebInspector._updateDockNavigationItems):
2055         (WebInspector._generateDisclosureTriangleImages):
2056         Use new images and add legacy path. Remove the shadow.
2057
2058         * UserInterface/Images: Updated images.
2059         * UserInterface/Images/Legacy: Added. Moved legacy images here.
2060
2061         * UserInterface/Views/CSSStyleDeclarationSection.css:
2062         (.style-declaration-section):
2063         (body.mac-platform.legacy .style-declaration-section + .style-declaration-section):
2064         (.style-declaration-section.last-in-group):
2065         (.style-declaration-section.last-in-group + .style-declaration-section):
2066         Use a consistent gray for borders.
2067
2068         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
2069         (.sidebar > .panel.details.css-style > .content > .pseudo-classes):
2070         Use a consistent gray for borders.
2071
2072         * UserInterface/Views/ContentBrowser.js:
2073         (WebInspector.ContentBrowser):
2074         Use new images and add legacy path.
2075
2076         * UserInterface/Views/ControlToolbarItem.css:
2077         (.toolbar .item.control):
2078         (body.mac-platform.legacy .toolbar .item.control):
2079         (.toolbar .item.control:hover):
2080         (body.mac-platform.legacy .toolbar .item.control:hover):
2081         Adjust the opacity for controls.
2082
2083         * UserInterface/Views/DOMTreeContentView.js:
2084         (WebInspector.DOMTreeContentView):
2085         Use new images and add legacy path.
2086
2087         * UserInterface/Views/DataGrid.css:
2088         (.data-grid tr.selected):
2089         Use a consistent gray for borders.
2090
2091         * UserInterface/Views/DataGrid.js:
2092         (WebInspector.DataGrid.prototype.get _generateSortIndicatorImagesIfNeeded):
2093         Use new images and add legacy path. Remove the shadow.
2094
2095         * UserInterface/Views/DebuggerSidebarPanel.js:
2096         (WebInspector.DebuggerSidebarPanel):
2097         Use new images and add legacy path.
2098
2099         * UserInterface/Views/DefaultDashboardView.css:
2100         (.toolbar .dashboard.default > .item):
2101         (body.mac-platform.legacy .toolbar .dashboard.default > .item):
2102         (body.mac-platform.legacy .toolbar .dashboard.default > .resourcesCount > img):
2103         (body.mac-platform.legacy .toolbar .dashboard.default > .time > img):
2104         (body.mac-platform.legacy .toolbar .dashboard.default > .logs > img):
2105         (body.mac-platform.legacy .toolbar .dashboard.default > .resourcesSize > img):
2106         (body.mac-platform.legacy .toolbar .dashboard.default > .errors > img):
2107         (body.mac-platform.legacy .toolbar .dashboard.default > .errors.enabled > img):
2108         (body.mac-platform.legacy .toolbar .dashboard.default > .issues > img):
2109         (body.mac-platform.legacy .toolbar .dashboard.default > .issues.enabled > img):
2110         Use new images and add legacy path.
2111
2112         * UserInterface/Views/DetailsSection.css:
2113         (.details-section):
2114         (.details-section .details-section:first-child):
2115         (body.mac-platform.legacy .details-section > .header):
2116         (.details-section > .content > .group):
2117         (.details-section > .content > .group:nth-child(even) > .row.simple:first-child > *):
2118         (body.mac-platform.legacy .details-section > .content > .group:last-child > .row.simple:last-child > *):
2119         Use a consistent gray for borders.
2120
2121         * UserInterface/Views/FilterBar.css:
2122         (body.mac-platform.legacy .filter-bar > input[type="search"]::-webkit-search-decoration):
2123         Use new images and add legacy path.
2124
2125         * UserInterface/Views/FindBanner.css:
2126         (.find-banner):
2127         Use a consistent gray for borders.
2128
2129         * UserInterface/Views/FindBanner.js:
2130         (WebInspector.FindBanner.prototype._generateButtonsGlyphsIfNeeded):
2131         Add legacy path.
2132
2133         * UserInterface/Views/FrameTreeElement.js:
2134         (WebInspector.FrameTreeElement.prototype.updateStatusForMainFrame):
2135         Use new images and add legacy path.
2136
2137         * UserInterface/Views/LogContentView.js:
2138         (WebInspector.LogContentView):
2139         Use new images and add legacy path.
2140
2141         * UserInterface/Views/Main.css:
2142         (#split-content-browser):
2143         Use a consistent gray for borders.
2144
2145         * UserInterface/Views/NavigationSidebarPanel.css:
2146         (.sidebar > .panel.navigation > .overflow-shadow):
2147         (body.mac-platform.legacy .sidebar > .panel.navigation > .overflow-shadow):
2148         (.sidebar > .panel.navigation > .overflow-shadow.top):
2149         (body.mac-platform.legacy .sidebar > .panel.navigation > .overflow-shadow.top):
2150         (.sidebar > .panel.navigation > .empty-content-placeholder):
2151         (body.mac-platform.legacy .sidebar > .panel.navigation > .empty-content-placeholder):
2152         (.navigation-sidebar-panel-content-tree-outline:focus .item.selected .disclosure-button):
2153         (.navigation-sidebar-panel-content-tree-outline:focus .item.selected.expanded .disclosure-button):
2154         (.navigation-sidebar-panel-content-tree-outline .item.selected):
2155         (.navigation-sidebar-panel-content-tree-outline:focus .item.selected):
2156         Adjust the styles to make the selected item use white text and icons only when focused.
2157
2158         * UserInterface/Views/NavigationSidebarPanel.js:
2159         (WebInspector.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibility):
2160         (WebInspector.NavigationSidebarPanel.prototype._generateDisclosureTrianglesIfNeeded):
2161         Remove the shadow from the disclosure triangles. Make the overflow shadow not fade.
2162
2163         * UserInterface/Views/ProbeDetailsSidebarPanel.css:
2164         (.details-section.probe-set .options > .probe-clear-samples):
2165         (.details-section.probe-set .options > .probe-remove):
2166         (.details-section.probe-set .options > .probe-add):
2167         (body.mac-platform.legacy .details-section.probe-set .options > .probe-clear-samples):
2168         (body.mac-platform.legacy .details-section.probe-set .options > .probe-remove):
2169         (body.mac-platform.legacy .details-section.probe-set .options > .probe-add):
2170         Tweak size and position of icons and use legacy paths.
2171
2172         * UserInterface/Views/QuickConsole.css:
2173         (.quick-console):
2174         Adjust padding to match filter bar height.
2175
2176         * UserInterface/Views/ResourceSidebarPanel.css:
2177         (.sidebar > .panel.navigation.resource > .search-bar):
2178         Adjust height.
2179
2180         * UserInterface/Views/RulesStyleDetailsPanel.css:
2181         (.sidebar > .panel.details.css-style .rules .label + .style-declaration-section):
2182         (.sidebar > .panel.details.css-style .rules .new-rule + .style-declaration-section):
2183         (body.mac-platform.legacy .sidebar > .panel.details.css-style .rules .new-rule img):
2184         Use a consistent gray for borders. Don't bold the New Rule label.
2185
2186         * UserInterface/Views/ScriptContentView.js:
2187         (WebInspector.ScriptContentView):
2188         Use new images and add legacy path.
2189
2190         * UserInterface/Views/Sidebar.css:
2191         (.sidebar.left):
2192         (.sidebar.right):
2193         Use a consistent gray for borders.
2194
2195         * UserInterface/Views/TextContentView.js:
2196         (WebInspector.TextContentView):
2197         Use new images and add legacy path.
2198
2199         * UserInterface/Views/TextResourceContentView.js:
2200         (WebInspector.TextResourceContentView):
2201         Use new images and add legacy path.
2202
2203         * UserInterface/Views/TimelineContentView.js:
2204         (WebInspector.TimelineContentView):
2205         Use new images and add legacy path.
2206
2207         * UserInterface/Views/TimelineDataGrid.css:
2208         (.data-grid.timeline th):
2209         (.data-grid.timeline th.sortable:active):
2210         (.data-grid.timeline th.sort-descending):
2211         Fix a regression with the gradient background showing in legacy mode.
2212
2213         * UserInterface/Views/TimelineIcons.css:
2214         (body.mac-platform.legacy .network-icon .icon):
2215         (body.mac-platform.legacy .network-icon.large .icon):
2216         (body.mac-platform.legacy .colors-icon .icon):
2217         (body.mac-platform.legacy .colors-icon.large .icon):
2218         Added legacy versions of these icons.
2219
2220         * UserInterface/Views/TimelineSidebarPanel.css:
2221         (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph):
2222         (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph:hover):
2223         (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph:active):
2224         (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.recording):
2225         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph):
2226         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.recording):
2227         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph:hover):
2228         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.recording:hover):
2229         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.forced):
2230         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph.recording.forced):
2231         (.sidebar > .panel.navigation.timeline > .timelines-content .close-button):
2232         (.sidebar > .panel.navigation.timeline > .timelines-content li.item.selected + li.item):
2233         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .timelines-content :focus li.item.selected + li.item):
2234         Update the styles for the recording button and close button.
2235
2236         * UserInterface/Views/TimelineSidebarPanel.js:
2237         (WebInspector.TimelineSidebarPanel.createTimelineTreeElement):
2238         Use TreeElementStatusButton instead of a styled image.
2239
2240         * UserInterface/Views/TreeElementStatusButton.css:
2241         (.item > .status > .status-button > svg path.filled):
2242         (body.mac-platform.legacy .item > .status > .status-button > svg path.filled):
2243         (:focus .item.selected > .status > .status-button > svg path.filled):
2244         (.item > .status > .status-button > svg path.stroked):
2245         (body.mac-platform.legacy .item > .status > .status-button > svg path.stroked):
2246         (:focus .item.selected > .status > .status-button > svg path.stroked):
2247         (.item.selected > .status > .status-button:active):
2248         (.item > .status > .status-button.disabled):
2249         Updated selectors and styles to work with stroke or fill.
2250
2251 2014-08-07  Brian J. Burg  <burg@cs.washington.edu>
2252
2253         Web Inspector: DebuggerManager sends spurious setBreakpointsActive commands when setting a breakpoint
2254         https://bugs.webkit.org/show_bug.cgi?id=135674
2255
2256         Reviewed by David Kilzer.
2257
2258         * UserInterface/Controllers/DebuggerManager.js:
2259         (WebInspector.DebuggerManager.prototype.set breakpointsEnabled): Fix a typo.
2260
2261 2014-08-06  Brian J. Burg  <burg@cs.washington.edu>
2262
2263         Web Inspector: breakpoint resolved state should not depend on all breakpoints being enabled
2264         https://bugs.webkit.org/show_bug.cgi?id=135517
2265
2266         Reviewed by Joseph Pecoraro.
2267
2268         Previously, Breakpoint.resolved returned false if all breakpoints were disabled, even if
2269         the breakpoint had an associated SourceCode. This was a weird hack to make it easier to
2270         style breakpoint widgets. This made it hard for other code to deal with resolved
2271         breakpoints that were also disabled, or SourceCodeLocations that resolve and unresolve.
2272         This patch removes that consideration and fixes style update code to manually check if all
2273         breakpoints are being suppressed.
2274
2275         The code now enforces that a Breakpoint must have a SourceCode before it can be resolved.
2276         (As a performance optimization when loading the initial frame tree, we sometimes we give
2277         Breakpoints a SourceCode before the debugger officially says that the breakpoint has been
2278         resolved. Thus, it's possible to be unresolved with a SourceCode, but not vice-versa.)
2279
2280         This patch also adds a few guards where we assumed a SourceCodeLocation had a SourceCode.
2281
2282         * UserInterface/Controllers/DebuggerManager.js:
2283         (WebInspector.DebuggerManager.prototype.set breakpointsEnabled): Remove spurious
2284         ResolvedStateDidChange events.
2285
2286         (WebInspector.DebuggerManager.prototype.breakpointResolved): Set the breakpoint's SourceCode
2287         if it has not been set already by DebuggerManager.associateBreakpointsWithSourceCode.
2288
2289         * UserInterface/Models/Breakpoint.js:
2290         (WebInspector.Breakpoint.prototype.get resolved):
2291         (WebInspector.Breakpoint.prototype.set resolved.isSpecialBreakpoint):
2292         (WebInspector.Breakpoint.prototype.set resolved): Add an assertion.
2293         * UserInterface/Models/SourceCodeLocation.js: Add guards for !SourceCode.
2294         (WebInspector.SourceCodeLocation.prototype.populateLiveDisplayLocationTooltip):
2295         * UserInterface/Views/BreakpointTreeElement.js: Account for DebuggerManager.breakpointsEnabled.
2296         (WebInspector.BreakpointTreeElement):
2297         (WebInspector.BreakpointTreeElement.prototype._updateStatus):
2298         * UserInterface/Views/ProbeSetDetailsSection.js:
2299         (WebInspector.ProbeSetDetailsSection.prototype._updateLinkElement): Loosen the assertion.
2300         * UserInterface/Views/SourceCodeTextEditor.js: Account for DebuggerManager.breakpointsEnabled.
2301         (WebInspector.SourceCodeTextEditor):
2302         (WebInspector.SourceCodeTextEditor.prototype.close):
2303         (WebInspector.SourceCodeTextEditor.prototype._breakpointStatusDidChange):
2304         (WebInspector.SourceCodeTextEditor.prototype._breakpointsEnabledDidChange):
2305         (WebInspector.SourceCodeTextEditor.prototype._updateBreakpointStatus):
2306         * UserInterface/Views/TextEditor.js: Account for DebuggerManager.breakpointsEnabled.
2307
2308 2014-08-06  Brian J. Burg  <burg@cs.washington.edu>
2309
2310         Web Inspector: ReplayManager should unpause and suppress breakpoints before capturing/replaying
2311         https://bugs.webkit.org/show_bug.cgi?id=135608
2312
2313         Reviewed by Timothy Hatcher.
2314
2315         It is jarring when the debugger pauses during capturing or replaying. For now, we should suppress
2316         all breakpoints during capturing or replaying, and restore breakpoint enabled state when
2317         capturing finishes, when replaying finishes, or during temporary replay pauses.
2318
2319         In the future, the debugger will be selectively enabled during playback to seek to specific
2320         breakpoint hits. This is tracked in https://bugs.webkit.org/show_bug.cgi?id=135663.
2321
2322         * UserInterface/Controllers/ReplayManager.js:
2323         (WebInspector.ReplayManager.prototype.startCapturing.result):
2324         (WebInspector.ReplayManager.prototype.replayToPosition.result):
2325         (WebInspector.ReplayManager.prototype.replayToCompletion.result):
2326         (WebInspector.ReplayManager.prototype.captureStopped):
2327         (WebInspector.ReplayManager.prototype.playbackPaused):
2328         (WebInspector.ReplayManager.prototype.playbackFinished):
2329         (WebInspector.ReplayManager.prototype._changeSegmentState):
2330         (WebInspector.ReplayManager.prototype._suppressBreakpointsAndResumeIfNeeded):
2331
2332 2014-08-06  Brent Fulgham  <bfulgham@apple.com>
2333
2334         [Win] Build fix.
2335
2336         * WebInspectorUI.vcxproj/WebInspectorUI.vcxproj: DebugSuffix target was missing
2337         proper path settings for final output.
2338
2339 2014-08-06  Wenson Hsieh  <wenson_hsieh@apple.com>
2340
2341         Implement parsing for CSS scroll snap points
2342         https://bugs.webkit.org/show_bug.cgi?id=134301
2343
2344         Reviewed by Dean Jackson.
2345
2346         * UserInterface/Models/CSSKeywordCompletions.js: Added snap point property keywords, such as mandatory, proximity, elements, and repeat.
2347
2348 2014-08-06  Brian J. Burg  <burg@cs.washington.edu>
2349
2350         REGRESSION(r172094): tests fail because Inspector test harness does not include UIString
2351         https://bugs.webkit.org/show_bug.cgi?id=135658
2352
2353         Reviewed by Joseph Pecoraro.
2354
2355         * UserInterface/Base/Test.js:
2356         (WebInspector.contentLoaded): Fix brace placement.
2357         (WebInspector.UIString): Added. This is the identity function during testing.
2358
2359 2014-08-06  Brian J. Burg  <burg@cs.washington.edu>
2360
2361         Web Inspector: convert ReplayManager to a promise-based API
2362         https://bugs.webkit.org/show_bug.cgi?id=135249
2363
2364         Reviewed by Timothy Hatcher.
2365
2366         Convert replay commands to an asynchronous, promise-based API. This addresses
2367         two problems with a synchronous replay API: clients can only use the synchronous
2368         API if session and segment state are exactly correct, and trying to change state
2369         to match this requirement requires chaining multiple commands and events.
2370
2371         The asynchronous API allows clients to issue replay commands with impunity,
2372         as long as they can be unambiguously handled. For example, issuing
2373         pausePlayback() while capturing is not allowed, but issuing startCapturing()
2374         while replaying is allowed. The API also hides implementation details that
2375         are not important, such as steps to unpause or temporarily disable the debugger.
2376
2377         This patch also cleans up uses of promises, such as adding error re-throwing.
2378         It adds return type annotations to public ReplayManager asynchronous methods.
2379
2380         * UserInterface/Controllers/ReplayManager.js:
2381         (WebInspector.ReplayManager.catch):
2382         (WebInspector.ReplayManager):
2383         (WebInspector.ReplayManager.prototype.createSession):
2384         (WebInspector.ReplayManager.prototype.switchSession):
2385         (WebInspector.ReplayManager.prototype.startCapturing):
2386         (WebInspector.ReplayManager.prototype.stopCapturing):
2387         (WebInspector.ReplayManager.prototype.replayToPosition):
2388         (WebInspector.ReplayManager.prototype.replayToCompletion):
2389         (WebInspector.ReplayManager.prototype.sessionCreated.catch): re-throw.
2390         (WebInspector.ReplayManager.prototype.segmentCompleted.catch): re-throw.
2391         (WebInspector.ReplayManager.prototype.segmentCompleted.catch): re-throw.
2392         (WebInspector.ReplayManager.prototype.segmentUnloaded.catch): re-throw.
2393         (WebInspector.ReplayManager.prototype.sessionCreated.catech): re-throw.
2394
2395 2014-08-06  Brian J. Burg  <burg@cs.washington.edu>
2396
2397         Web Inspector: protocol command invocations should return a promise if no callback is supplied
2398         https://bugs.webkit.org/show_bug.cgi?id=130702
2399
2400         Reviewed by Timothy Hatcher.
2401
2402         This allows the trailing Agent.command.promise(args) to be dropped in favor of just
2403         Agent.command(args). It should make it a bit easier to convert code to use promises.
2404
2405         Test: LayoutTests/inspector/protocol-promise-result.html
2406
2407         * UserInterface/Controllers/ReplayManager.js: Drop use of .promise().
2408         * UserInterface/Controllers/TimelineManager.js: Drop use of .promise().
2409         (WebInspector.TimelineManager.prototype.startCapturing):
2410         * UserInterface/Protocol/InspectorBackend.js:
2411         (.callable): Redirect to the promise entry point if the last argument isn't a function.
2412         (InspectorBackend.Command.create):
2413
2414 2014-08-05  James Craig  <jcraig@apple.com>
2415
2416         Web Inspector: AXI: Add label string once AccessibilityObject::computedLabel() is available
2417         https://bugs.webkit.org/show_bug.cgi?id=129940
2418
2419         Reviewed by Chris Fleizach.
2420
2421         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js: UI update for label field in Node Inspector.
2422         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility):
2423
2424 2014-08-05  Brian J. Burg  <burg@cs.washington.edu>
2425
2426         Web Inspector: support storing multiple timeline recordings in the manager
2427         https://bugs.webkit.org/show_bug.cgi?id=132875
2428
2429         Reviewed by Timothy Hatcher.
2430
2431         This patch adds support for capturing multiple timeline recordings and switching
2432         between them in the user interface using hierarchical path components.
2433
2434         * Localizations/en.lproj/localizedStrings.js:
2435         * UserInterface/Base/Main.js:
2436         (WebInspector.contentLoaded): Remove hard-coded priming of the timeline sidebar panel.
2437         Instead, load the first recording in the timeline manager after the initial load.
2438
2439         (WebInspector._revealAndSelectRepresentedObjectInNavigationSidebar): Don't suppress
2440         onselect events when selecting the tree element for a newly shown content view. This
2441         allows the sidebar to sync the current content view and timeline tree element selection
2442         with what is displayed in the content browser.
2443
2444         * UserInterface/Controllers/TimelineManager.js: Add two new events, RecordingCreated and
2445         RecordingLoaded. A recording is considered active when any new records recieved will be
2446         appended to that recording. The user interface is not necessarily viewing the active
2447         recording.
2448
2449         (WebInspector.TimelineManager.delayedWork):
2450         (WebInspector.TimelineManager): Keep a list of recordings, and load the first recording
2451         asynchronously so that everyone can add an event listener for it.
2452
2453         (WebInspector.TimelineManager.prototype.get activeRecording):
2454         (WebInspector.TimelineManager.prototype.get recordings):
2455         (WebInspector.TimelineManager.prototype.startCapturing):
2456         (WebInspector.TimelineManager.prototype.stopCapturing): Use promises to make the iOS 7
2457         fallback path better match the async semantics of the non-fallback path.
2458
2459         (WebInspector.TimelineManager.prototype.unloadRecording):
2460         (WebInspector.TimelineManager.prototype._loadNewRecording): Stop capturing and unload
2461         any existing recording before creating and loading a new recording.
2462
2463         (WebInspector.TimelineManager.prototype._startAutoCapturing): Create a new recording
2464         rather than resetting the current recording.
2465
2466         * UserInterface/Models/NetworkTimeline.js:
2467         (WebInspector.NetworkTimeline):
2468         * UserInterface/Models/Timeline.js:
2469         (WebInspector.Timeline):
2470         (WebInspector.Timeline.prototype.get type): Each timeline stores its TimelineRecord.Type
2471         so that other code can create type-specific views using the Timeline as a representedObject.
2472
2473         * UserInterface/Models/TimelineRecording.js: For each recording, add new state for a unique identifier,
2474         display string, and an isWritable flag. Once a recording is unloaded, it becomes read-only.
2475         (WebInspector.TimelineRecording.prototype.get displayName):
2476         (WebInspector.TimelineRecording.prototype.get identifier):
2477         (WebInspector.TimelineRecording.prototype.isWritable):
2478         (WebInspector.TimelineRecording.prototype.unloaded):
2479         (WebInspector.TimelineRecording.prototype.reset): A recording can only be reset if it is writable.
2480
2481         * UserInterface/Protocol/InspectorFrontendAPI.js:
2482         (InspectorFrontendAPI.setTimelineProfilingEnabled): Don't make redundant start/stop capturing calls.
2483
2484         * UserInterface/Views/LayoutTimelineOverviewGraph.js: Use a timeline as the representedObject for all
2485         timeline-specific graphs and views. Otherwise, use the recording.
2486         (WebInspector.LayoutTimelineOverviewGraph):
2487         * UserInterface/Views/LayoutTimelineView.js:
2488         (WebInspector.LayoutTimelineView):
2489         (WebInspector.LayoutTimelineView.prototype._treeElementSelected):
2490         * UserInterface/Views/NetworkTimelineOverviewGraph.js:
2491         (WebInspector.NetworkTimelineOverviewGraph):
2492         * UserInterface/Views/NetworkTimelineView.js:
2493         (WebInspector.NetworkTimelineView):
2494         * UserInterface/Views/OverviewTimelineView.js:
2495         (WebInspector.OverviewTimelineView.prototype._networkTimelineRecordAdded):
2496         * UserInterface/Views/ScriptTimelineOverviewGraph.js:
2497         (WebInspector.ScriptTimelineOverviewGraph):
2498         * UserInterface/Views/ScriptTimelineView.js:
2499         (WebInspector.ScriptTimelineView):
2500         (WebInspector.ScriptTimelineView.prototype._treeElementSelected):
2501
2502         * UserInterface/Views/TimelineContentView.js: Iterate over timeline objects when setting up maps. Use timelines
2503         as keys rather than their type identifiers.
2504         (WebInspector.TimelineContentView.prototype.showTimelineViewForTimeline): Renamed from showTimelineView. This
2505         function takes a Timeline instance rather than an identifier, since the conten view is specific to one recording.
2506         (WebInspector.TimelineContentView.prototype.get selectionPathComponents): Match types against the currently
2507         visible timeline's representedObject.
2508         (WebInspector.TimelineContentView.prototype.get currentTimelineView): Used by the sidebar panel to sync timeline
2509         tree element selections to TimelineView shown by the TimelineContentView.
2510         (WebInspector.TimelineContentView.prototype.shown): Sync enablement of the "Clear Timelines" button to recording
2511         read-only state.
2512
2513         (WebInspector.TimelineContentView.prototype.saveToCookie):
2514         (WebInspector.TimelineContentView.prototype.restoreFromCookie): Added. Only handle saving/restoring the subview.
2515
2516         (WebInspector.TimelineContentView.prototype._pathComponentSelected):
2517         (WebInspector.TimelineContentView.prototype._showTimelineView): Relax the early return so that timeline views
2518         and content tree outlines are reattached when re-navigating to the same timeline view via back-forward entries.
2519         (WebInspector.TimelineContentView.prototype.showTimelineView): Deleted.
2520
2521         * UserInterface/Views/TimelineOverviewGraph.js:
2522         (WebInspector.TimelineOverviewGraph):
2523
2524         * UserInterface/Views/TimelineSidebarPanel.js:
2525         (WebInspector.TimelineSidebarPanel): Keep a tree outline and tree element map for storing available recordings.
2526         (WebInspector.TimelineSidebarPanel.createTimelineTreeElement):
2527         (WebInspector.TimelineSidebarPanel.prototype.shown): Added.
2528         (WebInspector.TimelineSidebarPanel.prototype.showDefaultContentView): Add a guard.
2529         (WebInspector.TimelineSidebarPanel.prototype.get hasSelectedElement): Added. Selected recording tree elements
2530         should be considered when deciding whether a represented object has been selected in the sidebar panel.
2531
2532         (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.looselyCompareRepresentedObjects):
2533         (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.get if):
2534         (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject):
2535         (WebInspector.TimelineSidebarPanel.prototype.showTimelineOverview):
2536         (WebInspector.TimelineSidebarPanel.prototype.showTimelineViewForType): Renamed to explicit take a type identifier.
2537         Delegate the actual showing of the timeline view to the onselect handler for the timelines tree outline.
2538
2539         (WebInspector.TimelineSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
2540         (WebInspector.TimelineSidebarPanel.prototype.saveStateToCookie): Fix a typo.
2541         (WebInspector.TimelineSidebarPanel.prototype.restoreStateFromCookie): Fix a typo.
2542         (WebInspector.TimelineSidebarPanel.prototype._recordingsTreeElementSelected): Sync the currently displayed
2543         recording object and content view, and sync the selected tree element to the displayed timeline subview.
2544
2545         (WebInspector.TimelineSidebarPanel.prototype._timelinesTreeElementSelected): If this is a user action, show the timeline.
2546         (WebInspector.TimelineSidebarPanel.prototype._contentBrowserCurrentContentViewDidChange): Use classList.toggle().
2547         (WebInspector.TimelineSidebarPanel.prototype._recordingCreated): Dynamically add new recordings to the interface.
2548         (WebInspector.TimelineSidebarPanel.prototype._recordingLoaded): Automatically show recordings when they are loaded.
2549         (WebInspector.TimelineSidebarPanel.prototype._recordGlyphClicked): Shift+click will force-create a new recording.
2550         (WebInspector.TimelineSidebarPanel.prototype.initialize): Deleted.
2551         * UserInterface/Views/TimelineView.js:
2552         (WebInspector.TimelineView):
2553         (WebInspector.TimelineView.prototype.get representedObject):
2554
2555 2014-08-05  Brian J. Burg  <burg@cs.washington.edu>
2556
2557         Web Inspector: ReplayManager shouldn't assume replay status when the inspector is opened
2558         https://bugs.webkit.org/show_bug.cgi?id=135212
2559
2560         Reviewed by Timothy Hatcher.
2561
2562         The inspector could be closed and reopened at any point during capturing or replaying.
2563         ReplayManager should query the current state on initialization rather than assuming
2564         that the replay controller is still in its initial state.
2565
2566         ReplayManager's initialization code requires querying the backend for the current replay
2567         state. This could race with replay protocol events that mutate the manager's state before
2568         it is fully initialized, leading to undefined behavior.
2569
2570         To mitigate this, all protocol event handlers (called by ReplayObserver) are wrapped
2571         with a guard that enqueues the callback if initialization is not yet complete. This
2572         queue is implemented via multiple then-chaining of a shared 'initialization' promise
2573         which resolves when initialization completes.
2574
2575         * UserInterface/Controllers/ReplayManager.js:
2576         (WebInspector.ReplayManager.then):
2577         (WebInspector.ReplayManager.catch):
2578         (WebInspector.ReplayManager): Rewrite the initialization code to first query the replay
2579         state, set the initialization flag to true, and then request and update session records.
2580         The sessions must be loaded after querying initial state because ReplayManager.sessionCreated
2581         requires replay state to be initialized.
2582
2583         (WebInspector.ReplayManager.prototype.get sessionState):
2584         (WebInspector.ReplayManager.prototype.get segmentState):
2585         (WebInspector.ReplayManager.prototype.get activeSessionIdentifier):
2586         (WebInspector.ReplayManager.prototype.get activeSegmentIdentifier):
2587         (WebInspector.ReplayManager.prototype.get playbackSpeed):
2588         (WebInspector.ReplayManager.prototype.set playbackSpeed):
2589         (WebInspector.ReplayManager.prototype.get currentPosition): Add assertions to catch uses of
2590         manager state before the manager is fully initialized.
2591
2592         (WebInspector.ReplayManager.prototype.waitUntilInitialized): Added. It returns a shared promise
2593         that is fulfilled when initialization is complete.
2594
2595         (WebInspector.ReplayManager.prototype.captureStarted):
2596         (WebInspector.ReplayManager.prototype.captureStopped):
2597         (WebInspector.ReplayManager.prototype.playbackStarted):
2598         (WebInspector.ReplayManager.prototype.playbackHitPosition):
2599         (WebInspector.ReplayManager.prototype.playbackPaused):
2600         (WebInspector.ReplayManager.prototype.playbackFinished):
2601         (WebInspector.ReplayManager.prototype.sessionModified):
2602         (WebInspector.ReplayManager.prototype.sessionLoaded):
2603         (WebInspector.ReplayManager.prototype.segmentCompleted.set catch):
2604         (WebInspector.ReplayManager.prototype.segmentCompleted):
2605         (WebInspector.ReplayManager.prototype.segmentRemoved.then):
2606         (WebInspector.ReplayManager.prototype.segmentRemoved):
2607         (WebInspector.ReplayManager.prototype.segmentLoaded): Add initialization guards.
2608
2609 2014-08-05  Brian J. Burg  <burg@cs.washington.edu>
2610
2611         Web Replay: rename protocol methods for getting replay session/segment data
2612         https://bugs.webkit.org/show_bug.cgi?id=135618
2613
2614         Reviewed by Timothy Hatcher.
2615
2616         * UserInterface/Controllers/ReplayManager.js:
2617         (WebInspector.ReplayManager.prototype.getSession.get var):
2618         (WebInspector.ReplayManager.prototype.getSegment.get var):
2619         * UserInterface/Models/ReplaySession.js:
2620         (WebInspector.ReplaySession.prototype.segmentsChanged):
2621
2622 2014-08-05  Brian J. Burg  <burg@cs.washington.edu>
2623
2624         Web Inspector: cannot navigate between multiple applicable dashboards
2625         https://bugs.webkit.org/show_bug.cgi?id=135130
2626
2627         Reviewed by Timothy Hatcher.
2628
2629         Add navigation arrows between dashboards when multiple dashboards are applicable.
2630         For example, the user should be able to go back to the default dashboard while paused
2631         at a breakpoint. Dashboards form a stack based on when they are first introduced.
2632
2633         * UserInterface/Views/DashboardContainerView.css:
2634         (.toolbar .dashboard): Increase padding-right a bit to make room for arrows.
2635         (.toolbar .dashboard:not(.visible)): Fix a bug where higher dashboards in the dashboard stack
2636         can shine through when animating between two lower dashboards that have transparent background.
2637         This ensures that at most two dashboards (namely, the ones being animated) are displayed.
2638
2639         (.dashboard-container .advance-arrow): Main style class for navigation arrows.
2640         (.dashboard-container .advance-arrow:hover):
2641         (.dashboard-container .advance-arrow:active):
2642         (.dashboard-container .advance-arrow.inactive):
2643         (.toolbar.label-only .dashboard-container .advance-arrow): Make arrows slightly smaller when
2644         the dashboards get shorter.
2645
2646         (.dashboard-container .advance-arrow.advance-forward):
2647         (.dashboard-container .advance-arrow.advance-backward):
2648         * UserInterface/Views/DashboardContainerView.js:
2649         (WebInspector.DashboardContainerView): Arrow styles are updated when a dashboard is shown,
2650         hidden, or closed. When moving away, we dismiss (i.e., set zero opacity) arrows at animation
2651         start. When the animation finishes, redisplay arrows that are applicable for the new dashboard.
2652
2653         (WebInspector.DashboardContainerView.prototype._advanceForwardArrowClicked):
2654         (WebInspector.DashboardContainerView.prototype._advanceBackwardArrowClicked):
2655         (WebInspector.DashboardContainerView.prototype._dismissAdvanceArrows):
2656         (WebInspector.DashboardContainerView.prototype._updateAdvanceArrowVisibility):
2657         (WebInspector.DashboardContainerView.prototype._showDashboardAtIndex): There was a bug here
2658         where it would unconditionally use the same animation direction when showing a dashboard, but
2659         it was hard to spot without arrows that must correlate with the animation direction.
2660
2661         (WebInspector.DashboardContainerView.prototype.animationEnded):
2662         (WebInspector.DashboardContainerView.prototype._showDashboardView):
2663         (WebInspector.DashboardContainerView.prototype._hideDashboardView):
2664         (WebInspector.DashboardContainerView.prototype._closeDashboardView):
2665
2666 2014-08-05  Saam Barati  <sbarati@apple.com>
2667
2668         Web Inspector: shown() called on a content view when stepping over an instruction in the debugger
2669         https://bugs.webkit.org/show_bug.cgi?id=135311
2670
2671         Reviewed by Timothy Hatcher.
2672
2673         ContentViewContainer should not repeatedly call ContentView.prototype.shown 
2674         on ContentViews that are already visible. ContentViewContainer now passes
2675         a flag to BackForwardEntry.prototype.prepareToShow indicating whether it should
2676         call the shown function on the ContentView it is about to display.
2677         ContentViewContainer.prototype.showBackForwardEntryForIndex passes in this
2678         flag based on its ContentView being visible.
2679
2680         * UserInterface/Models/BackForwardEntry.js:
2681         (WebInspector.BackForwardEntry.prototype.prepareToShow):
2682         * UserInterface/Views/ContentViewContainer.js:
2683         (WebInspector.ContentViewContainer.prototype.showBackForwardEntryForIndex):
2684         (WebInspector.ContentViewContainer.prototype.replaceContentView):
2685         (WebInspector.ContentViewContainer.prototype.closeAllContentViewsOfPrototype):
2686         (WebInspector.ContentViewContainer.prototype.shown):
2687         (WebInspector.ContentViewContainer.prototype._showEntry):
2688
2689 2014-08-01  Jonathan Wells  <jonowells@apple.com>
2690
2691         Web Inspector: Timeline header height doesn't match style updates.
2692         https://bugs.webkit.org/show_bug.cgi?id=135516
2693
2694         Reviewed by Timothy Hatcher.
2695
2696         Update the timeline header height to match the updates
2697         to the navigation bars in other panels made in
2698         https://bugs.webkit.org/show_bug.cgi?id=135445. Also
2699         update the shadows on some of the search bars.
2700
2701         * UserInterface/Views/FilterBar.css:
2702         (.filter-bar > input[type="search"]):
2703         (body.mac-platform.legacy .filter-bar > input[type="search"]):
2704         * UserInterface/Views/FindBanner.css:
2705         (.find-banner > input[type="search"]):
2706         (body.mac-platform.legacy .find-banner > input[type="search"]):
2707         * UserInterface/Views/LogContentView.css:
2708         (.search-bar.log-search-bar > input[type="search"]):
2709         (body.mac-platform.legacy .search-bar.log-search-bar > input[type="search"]):
2710         Remove inset shadows on search bars.
2711
2712         * UserInterface/Views/TimelineSidebarPanel.css:
2713         (.sidebar > .panel.navigation.timeline > .status-bar):
2714         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar):
2715         (.sidebar > .panel.navigation.timeline > .status-bar > .record-glyph):
2716         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-glyph):
2717         (.sidebar > .panel.navigation.timeline > .status-bar > .record-status):
2718         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .status-bar > .record-status):
2719         (.sidebar > .panel.navigation.timeline > .title-bar.timelines):
2720         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .title-bar.timelines):
2721         (.sidebar > .panel.navigation.timeline > .title-bar.timeline-events):
2722         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .title-bar.timeline-events):
2723         (.sidebar > .panel.navigation.timeline > .timelines-content):
2724         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .timelines-content):
2725         (.sidebar > .panel.navigation.timeline > .empty-content-placeholder):
2726         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .empty-content-placeholder):
2727         Update the height of the timeline status bar.
2728
2729 2014-07-31  Joseph Pecoraro  <pecoraro@apple.com>
2730
2731         Web Inspector: "Stop Recording" button feels unresponsive, recording takes a long time to stop
2732         https://bugs.webkit.org/show_bug.cgi?id=135490
2733
2734         Reviewed by Timothy Hatcher.
2735
2736         * UserInterface/Controllers/TimelineManager.js:
2737         (WebInspector.TimelineManager.prototype.stopCapturing):
2738         Immediately stop the recording without waiting for an event from the backend.
2739         This makes the Web Inspector UI feel responsive to the user stopping the recording.
2740         This also matches behavior before r171195.
2741
2742 2014-07-31  Joseph Pecoraro  <pecoraro@apple.com>
2743
2744         Web Inspector: Timeline recording is not working inspecting iOS 7 and earlier
2745         https://bugs.webkit.org/show_bug.cgi?id=135466
2746
2747         Reviewed by Timothy Hatcher.
2748
2749         Start / stop capturing for older backends that won't emit start / stop events.
2750
2751         * UserInterface/Protocol/InspectorBackend.js:
2752         (InspectorBackend.Agent.prototype.hasEvent):
2753         Provide a way to check if an event is supported.
2754
2755         * UserInterface/Controllers/TimelineManager.js:
2756         (WebInspector.TimelineManager.prototype.startCapturing):
2757         (WebInspector.TimelineManager.prototype.stopCapturing):
2758         Fallback to starting and stopping capturing manually if the backend
2759         does not provide the events.
2760
2761 2014-07-31  Jonathan Wells  <jonowells@apple.com>
2762
2763         Web Inspector: Sync button look and feel with Xcode updates.
2764         https://bugs.webkit.org/show_bug.cgi?id=135445
2765
2766         Reviewed by Timothy Hatcher.
2767
2768         Update styles to match recent changes to Xcode text-only
2769         buttons, the navigation bar, and search fields. Include
2770         older style rules for older Mac platforms.
2771
2772         * UserInterface/Views/ButtonNavigationItem.css:
2773         (.navigation-bar .item.button.text-only):
2774         (body.mac-platform.legacy .navigation-bar .item.button.text-only):
2775         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
2776         (.sidebar > .panel.details.css-style > .navigation-bar):
2777         (.sidebar > .panel.details.css-style > .content):
2778         (body.mac-platform.legacy .sidebar > .panel.details.css-style > .content):
2779         * UserInterface/Views/DebuggerSidebarPanel.css:
2780         (.sidebar > .panel.navigation.debugger > .content):
2781         (body.mac-platform.legacy .sidebar > .panel.navigation.debugger > .content):
2782         * UserInterface/Views/DividerNavigationItem.css:
2783         (.navigation-bar .item.divider):
2784         (body.mac-platform.legacy .navigation-bar .item.divider):
2785         * UserInterface/Views/FilterBar.css:
2786         (.filter-bar):
2787         (body.mac-platform.legacy .filter-bar):
2788         (.filter-bar > input[type="search"]):
2789         (body.mac-platform.legacy .filter-bar > input[type="search"]):
2790         * UserInterface/Views/LogContentView.css:
2791         (.search-bar.log-search-bar > input[type="search"]):
2792         (@media reader):
2793         (.log-search-bar > input): Deleted.
2794         * UserInterface/Views/Main.css:
2795         (#split-content-browser > .navigation-bar):
2796         (body.mac-platform.legacy #split-content-browser > .navigation-bar):
2797         * UserInterface/Views/NavigationBar.css:
2798         (.navigation-bar):
2799         (body.mac-platform.legacy .navigation-bar):
2800         (.navigation-bar .item):
2801         (body.mac-platform.legacy .navigation-bar .item):
2802         * UserInterface/Views/NavigationSidebarPanel.css:
2803         (.sidebar > .panel.navigation > .content):
2804         (body.mac-platform.legacy .sidebar > .panel.navigation > .content):
2805         * UserInterface/Views/QuickConsole.css:
2806         (.quick-console):
2807         (body.mac-platform.legacy .quick-console):
2808         * UserInterface/Views/RadioButtonNavigationItem.css:
2809         (.navigation-bar .item.radio.button.text-only:hover):
2810         (body.mac-platform.legacy .navigation-bar .item.radio.button.text-only:hover):
2811         (.navigation-bar .item.radio.button.text-only.selected):
2812         (body.mac-platform.legacy .navigation-bar .item.radio.button.text-only.selected):
2813         (.navigation-bar .item.radio.button.text-only:active):
2814         (.navigation-bar .item.radio.button.text-only.selected:active):
2815         (body.mac-platform.legacy .navigation-bar .item.radio.button.text-only.selected:active):
2816         * UserInterface/Views/ResourceSidebarPanel.css:
2817         (.sidebar > .panel.navigation.resource > .empty-content-placeholder):
2818         (body.mac-platform.legacy .sidebar > .panel.navigation.resource > .empty-content-placeholder):
2819         (.sidebar > .panel.navigation.resource > .search-bar):
2820         (body.mac-platform.legacy .sidebar > .panel.navigation.resource > .search-bar):
2821         (.sidebar > .panel.navigation.resource > .search-bar > input[type="search"]):
2822         (body.mac-platform.legacy .sidebar > .panel.navigation.resource > .search-bar > input[type="search"]):
2823         * UserInterface/Views/ScopeBar.css:
2824         (.scope-bar > li):
2825         (body.mac-platform.legacy .scope-bar > li):
2826         (.scope-bar > li:hover):
2827         (body.mac-platform.legacy .scope-bar > li:hover):
2828         (.scope-bar > li.selected):
2829         (.scope-bar > li:active):
2830         (body.mac-platform.legacy .scope-bar > li:active):
2831         (.scope-bar > li.selected:active):
2832         (body.mac-platform.legacy .scope-bar > li.selected:active):
2833         * UserInterface/Views/SearchBar.css:
2834         (.search-bar > input[type="search"]):
2835         (body.mac-platform.legacy .search-bar > input[type="search"]):
2836         Update styles and apply older styles to legacy Mac platforms.
2837
2838 2014-07-31  Brian J. Burg  <burg@cs.washington.edu>
2839
2840         Web Inspector: MessageDispatcher should not synchronously dispatch all backend messages
2841         https://bugs.webkit.org/show_bug.cgi?id=135427
2842
2843         Reviewed by Timothy Hatcher.
2844
2845         The frontend dispatches all queued messages from the backend synchronously, even if there are
2846         hundreds of messages, or even if some of the messages take a long time (>10ms) to process.
2847
2848         This patch adds a time limit to the frontend's message dispatcher. If the time limit is exceeded
2849         when processing the message queue, unhandled messages remain in the queue and the dispatcher goes
2850         to sleep until the next run loop (obtained by a new setTimeout).
2851
2852         This has the effect of removing stutters when the message queue has hundreds of small messages.
2853         The outliers are still the same since some single messages can take over 200ms to be handled.
2854
2855         This patch also improves performance logging in InspectorBackend so that it is easier to see
2856         message handling times and their distribution among run loop turns.
2857
2858         * UserInterface/Protocol/InspectorBackend.js:
2859         (InspectorBackendClass): Add a new diagnostic flag that warns about slow message handling.
2860         (InspectorBackendClass.prototype._dispatchCallback.get if): Improve logging.
2861         (InspectorBackendClass.prototype._dispatchCallback): Improve logging.
2862         (InspectorBackendClass.prototype._dispatchEvent): Improve logging.
2863         * UserInterface/Protocol/MessageDispatcher.js:
2864         (WebInspector.dispatchNextQueuedMessageFromBackend): Keep track of a time limit for message
2865         dispatching, and set a new timeout if we exceed the time limit.
2866
2867 2014-07-31  Joseph Pecoraro  <pecoraro@apple.com>
2868
2869         Web Inspector: Right edge of Timeline Record button does not work
2870         https://bugs.webkit.org/show_bug.cgi?id=135444
2871
2872         Reviewed by Timothy Hatcher.
2873
2874         When hovering the record button we would show the status text, however
2875         because the left edge of the status text box would overlap the right
2876         edge of the record button causing completely unexpected behavior.
2877
2878         Position the status text correctly so that it never overlaps the record
2879         button. 5px to match the left margin of the record button, and another
2880         2px for some padding between the button and text.
2881
2882         * UserInterface/Views/TimelineSidebarPanel.css:
2883         (.sidebar > .panel.navigation.timeline > .status-bar > .record-status):
2884
2885 2014-07-31  Joseph Pecoraro  <pecoraro@apple.com>
2886
2887         Web Inspector: console.profile missing profile information
2888         https://bugs.webkit.org/show_bug.cgi?id=135432
2889
2890         Reviewed by Timothy Hatcher.
2891
2892         * UserInterface/Models/ScriptTimelineRecord.js:
2893         Delete the payload information as soon as it has been processed.
2894         It is no longer needed anymore and can be garbage collected.
2895
2896 2014-07-30  Brian J. Burg  <burg@cs.washington.edu>
2897
2898         Web Inspector: ProbeSetDetailsSection should not create live location links for unresolved breakpoints
2899         https://bugs.webkit.org/show_bug.cgi?id=135367
2900
2901         Reviewed by Timothy Hatcher.
2902
2903         Regenerate the source code link whenever the breakpoint resolved status changes. If it is
2904         resolved, then we can create a live location link that respects source maps.
2905
2906         * UserInterface/Views/ProbeSetDetailsSection.js:
2907         (WebInspector.ProbeSetDetailsSection):
2908         (WebInspector.ProbeSetDetailsSection.prototype._updateLinkElement): Added.
2909         (WebInspector.ProbeSetDetailsSection.prototype._probeSetPositionTextOrLink): Deleted.
2910
2911 2014-07-29  Joseph Pecoraro  <pecoraro@apple.com>
2912
2913         Web Inspector: 80% of time during recording is spent creating source code locations for profile nodes
2914         https://bugs.webkit.org/show_bug.cgi?id=135399
2915
2916         Reviewed by Timothy Hatcher.
2917
2918         Profiling the inspector while recording a timeline, a significant amount of
2919         time was spent creating SourceCodeLocation objects for profiling information
2920         and call frames. A lot of this data was eagerly being processed, even though
2921         it would not immediately be presentable to the user.
2922
2923         This makes two significant changes. We create a LazySourceCodeLocation class
2924         which does as little as possible until display information is requested. We
2925         also lazily convert the profiler payload data to a Profile object, so the
2926         processing is only done if you drill into the Script specific timeline.
2927
2928         This results in a significant performance improvement in the overview view.
2929
2930         * UserInterface/Controllers/TimelineManager.js:
2931         (WebInspector.TimelineManager.prototype.eventRecorded.processRecord):
2932         (WebInspector.TimelineManager.prototype.eventRecorded):
2933         (WebInspector.TimelineManager.prototype._callFramesFromPayload.createCallFrame):
2934         (WebInspector.TimelineManager.prototype._callFramesFromPayload):
2935         (WebInspector.TimelineManager.prototype._profileFromPayload.profileNodeFromPayload): Deleted.
2936         (WebInspector.TimelineManager.prototype._profileFromPayload.profileNodeCallFromPayload): Deleted.
2937         (WebInspector.TimelineManager.prototype._profileFromPayload): Deleted.
2938         Do not eagerly process profile payloads. Instead pass the payload to ScriptTimelineRecords.
2939         Likewise create callframes with lazy source code locations to do the minimum amount of work.
2940
2941         * UserInterface/Models/ScriptTimelineRecord.js:
2942         (WebInspector.ScriptTimelineRecord):
2943         (WebInspector.ScriptTimelineRecord.prototype.get profile):
2944         (WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeFromPayload):
2945         (WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeCallFromPayload):
2946         (WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload):
2947         Only when the profile is asked do we process the profiler payload information.
2948         This defer the processing until at least the user drills into the Script timeline.
2949
2950         * UserInterface/Main.html:
2951         Add the new class and ensure SourceCodeLocation is available beforehand.
2952
2953         * UserInterface/Models/LazySourceCodeLocation.js: Added.
2954         (WebInspector.LazySourceCodeLocation):
2955         (WebInspector.LazySourceCodeLocation.prototype.isEqual):
2956         (WebInspector.LazySourceCodeLocation.prototype.get sourceCode):
2957         (WebInspector.LazySourceCodeLocation.prototype.set sourceCode):
2958         (WebInspector.LazySourceCodeLocation.prototype.get formattedLineNumber):
2959         (WebInspector.LazySourceCodeLocation.prototype.get formattedColumnNumber):
2960         (WebInspector.LazySourceCodeLocation.prototype.formattedPosition):
2961         (WebInspector.LazySourceCodeLocation.prototype.hasFormattedLocation):
2962         (WebInspector.LazySourceCodeLocation.prototype.hasDifferentDisplayLocation):
2963         (WebInspector.LazySourceCodeLocation.prototype.resolveMappedLocation):
2964         (WebInspector.LazySourceCodeLocation.prototype._lazyInitialization):
2965         Only when display information is requested will we perform extra processing.
2966         For basic information we do not need to check for formatted (pretty-printed) info.
2967
2968         * UserInterface/Models/SourceCode.js:
2969         (WebInspector.SourceCode.prototype.createLazySourceCodeLocation):
2970         Provide an explict create function for lazy source codes.
2971
2972         * UserInterface/Models/SourceCodeLocation.js:
2973         (WebInspector.SourceCodeLocation.prototype.set sourceCode):
2974         (WebInspector.SourceCodeLocation.prototype.get displaySourceCode):
2975         (WebInspector.SourceCodeLocation.prototype.get displayLineNumber):
2976         (WebInspector.SourceCodeLocation.prototype.get displayColumnNumber):
2977         (WebInspector.SourceCodeLocation.prototype.hasMappedLocation):
2978         (WebInspector.SourceCodeLocation.prototype.setSourceCode):
2979         (WebInspector.SourceCodeLocation.prototype.resolveMappedLocation):
2980         (WebInspector.SourceCodeLocation.prototype._makeChangeAndDispatchChangeEventIfNeeded):
2981         (WebInspector.SourceCodeLocation.prototype._resolveMappedLocation): Deleted.
2982         Include two protected functions which LazySourceCodeLocation overrides.
2983
2984 2014-07-29  Joseph Pecoraro  <pecoraro@apple.com>
2985
2986         Web Inspector: Only compute full ProfileNode times if needed - Legacy Profiler
2987         https://bugs.webkit.org/show_bug.cgi?id=135406
2988
2989         Reviewed by Timothy Hatcher.
2990
2991         Full ProfileNode times are only used by the Legacy Profiler. The new profile
2992         information in the Scripts Timelines currently never uses the pass. We should
2993         avoid calculating it if we never use it.
2994
2995         * UserInterface/Models/ProfileNode.js:
2996         (WebInspector.ProfileNode.prototype.get startTime):
2997         (WebInspector.ProfileNode.prototype.get endTime):
2998         (WebInspector.ProfileNode.prototype.get selfTime):
2999         (WebInspector.ProfileNode.prototype.get totalTime):
3000         (WebInspector.ProfileNode.prototype.establishRelationships):
3001         (WebInspector.ProfileNode.prototype._computeTotalTimes):
3002
3003 2014-07-29  Joseph Pecoraro  <pecoraro@apple.com>
3004
3005         Web Inspector: Reduce forced layouts in TimelineOverview
3006         https://bugs.webkit.org/show_bug.cgi?id=135405
3007
3008         Reviewed by Timothy Hatcher.
3009
3010         Remove another forced layout. The scroll container won't
3011         change size unless the ContentView itself resized. Make the
3012         distinction between a layout update due to a resize and
3013         normal events (scale changes, etc) and only calculate
3014         element sizes then.
3015
3016         * UserInterface/Views/TimelineContentView.js:
3017         (WebInspector.TimelineContentView.prototype.updateLayout):
3018         * UserInterface/Views/TimelineOverview.js:
3019         (WebInspector.TimelineOverview):
3020         (WebInspector.TimelineOverview.prototype.get visibleDuration):
3021         (WebInspector.TimelineOverview.prototype.updateLayoutForResize):
3022
3023 2014-07-29  Brian J. Burg  <burg@cs.washington.edu>
3024
3025         Web Inspector: breakpoints are always speculatively resolved when restored from local storage
3026         https://bugs.webkit.org/show_bug.cgi?id=135396
3027
3028         Reviewed by Timothy Hatcher.
3029
3030         A longstanding quirk/optimization in the frontend is that we immediately set a breakpoint
3031         as resolved if the breakpoint was successfully set in the backend. This ensures that clicking in
3032         the gutter immediately produces a resolved breakpoint with only one round-trip.
3033
3034         However, not all breakpoints should be speculatively resolved, because the corresponding resource
3035         may not be loaded yet. This situation causes problems for code that assumes a resolved breakpoint
3036         also has a valid sourceCodeLocation.sourceCode.
3037
3038         * UserInterface/Controllers/DebuggerManager.js:
3039         (WebInspector.DebuggerManager.restoreBreakpointsSoon): Don't leak the variable to global scope.
3040         (WebInspector.DebuggerManager):
3041         (WebInspector.DebuggerManager.prototype.speculativelyResolveBreakpoint):
3042         (WebInspector.DebuggerManager.prototype.addBreakpoint): Speculatively resolve here if requested
3043         using the success callback passed to _setBreakpoint.
3044
3045         (WebInspector.DebuggerManager.prototype.didSetBreakpoint): Emit simulated
3046         Debugger.breakpointResolved events since they are only sent by the backend when a script is parsed.
3047
3048         (WebInspector.DebuggerManager.prototype._setBreakpoint):
3049         * UserInterface/Views/SourceCodeTextEditor.js:
3050         (WebInspector.SourceCodeTextEditor.prototype.textEditorBreakpointAdded): Request speculative resolve.
3051
3052 2014-07-29  Joseph Pecoraro  <pecoraro@apple.com>
3053
3054         Web Inspector: Eliminate more forced layouts during timeline recordings
3055         https://bugs.webkit.org/show_bug.cgi?id=135397
3056
3057         Reviewed by Timothy Hatcher.
3058
3059         Instead of computing the secondsPerPixel in each overview graph,
3060         we can ask the overview view itself which has a cached value.
3061         The computation used to force a layout, now it doesn't need to.
3062
3063         * UserInterface/Views/LayoutTimelineOverviewGraph.js:
3064         * UserInterface/Views/NetworkTimelineOverviewGraph.js:
3065         * UserInterface/Views/ScriptTimelineOverviewGraph.js:
3066         * UserInterface/Views/TimelineOverview.js:
3067         (WebInspector.TimelineOverview):
3068         * UserInterface/Views/TimelineOverviewGraph.js:
3069         (WebInspector.TimelineOverviewGraph):
3070         (WebInspector.TimelineOverviewGraph.prototype.get timelineOverview):
3071         (WebInspector.TimelineOverviewGraph.prototype.set timelineOverview):
3072
3073 2014-07-28  Joseph Pecoraro  <pecoraro@apple.com>
3074
3075         Web Inspector: Incorrectly sized TimelineDataGrid event bubble
3076         https://bugs.webkit.org/show_bug.cgi?id=135371
3077
3078         Reviewed by Timothy Hatcher.
3079
3080         Previously the secondsPerPixel calculation was relying on an element
3081         that may not be sized yet. This was resulting in a visibleWidth of 0
3082         and resulted in secondsPerPixel being Infinity. Fortunately, the
3083         graph data source already knows the secondsPerPixel so we can just
3084         ask it. Getting the correct value and eliminating forced layouts.
3085
3086         * UserInterface/Views/OverviewTimelineView.js:
3087         (WebInspector.OverviewTimelineView.prototype.get secondsPerPixel):
3088         * UserInterface/Views/TimelineDataGridNode.js:
3089
3090 2014-07-28  Joseph Pecoraro  <pecoraro@apple.com>
3091
3092         Web Inspector: Reduce work creating the initial WebInspector.TimelineRecordBar
3093         https://bugs.webkit.org/show_bug.cgi?id=135373
3094
3095         Reviewed by Timothy Hatcher.
3096
3097         Eliminate a bit of extra work creating TimelineRecordBars. Previously
3098         the constructor would setup an empty list of records, and then we would
3099         immediately after replace them. Now just set them in the constructor.
3100
3101         * UserInterface/Views/LayoutTimelineOverviewGraph.js:
3102         (WebInspector.LayoutTimelineOverviewGraph.prototype.updateLayout.createBar):
3103         (WebInspector.LayoutTimelineOverviewGraph.prototype.updateLayout):
3104         * UserInterface/Views/NetworkTimelineOverviewGraph.js:
3105         (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout.createBar):
3106         (WebInspector.NetworkTimelineOverviewGraph.prototype.updateLayout):
3107         * UserInterface/Views/ScriptTimelineOverviewGraph.js:
3108         (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout.createBar):
3109         (WebInspector.ScriptTimelineOverviewGraph.prototype.updateLayout):
3110         * UserInterface/Views/TimelineDataGridNode.js:
3111         (WebInspector.TimelineDataGridNode.prototype.refreshGraph.createBar):
3112
3113 2014-07-28  Timothy Hatcher  <timothy@apple.com>
3114
3115         Web Inspector: Unexpected dark border on selected but window inactive timeline
3116         https://bugs.webkit.org/show_bug.cgi?id=135360
3117
3118         Update the border-top colors for the item adjacent to the selected item.
3119
3120         Reviewed by Joseph Pecoraro.
3121
3122         * UserInterface/Views/TimelineSidebarPanel.css:
3123         (.sidebar > .panel.navigation.timeline > .timelines-content li.item.selected + li.item):
3124         (.sidebar > .panel.navigation.timeline > .timelines-content :focus li.item.selected + li.item):
3125         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .timelines-content li.item.selected + li.item):
3126         (body.mac-platform.legacy .sidebar > .panel.navigation.timeline > .timelines-content :focus li.item.selected + li.item):
3127
3128 2014-07-28  Joseph Pecoraro  <pecoraro@apple.com>
3129
3130         Web Inspector: Disable Copy Row in Timelines DataGrids, it does not currently provide value
3131         https://bugs.webkit.org/show_bug.cgi?id=135364
3132
3133         Reviewed by Timothy Hatcher.
3134
3135         * UserInterface/Views/DataGrid.js:
3136         (WebInspector.DataGridNode):
3137         (WebInspector.DataGridNode.prototype.get copyable):
3138         (WebInspector.DataGridNode.prototype.set copyable):
3139         * UserInterface/Views/TimelineDataGridNode.js:
3140         (WebInspector.TimelineDataGridNode):
3141
3142 2014-07-26  Brian J. Burg  <burg@cs.washington.edu>
3143
3144         Web Inspector: ReplayManager uses undefined events and inconsistent event data
3145         https://bugs.webkit.org/show_bug.cgi?id=135222
3146
3147         Reviewed by Timothy Hatcher.
3148
3149         * UserInterface/Controllers/ReplayManager.js:
3150         (WebInspector.ReplayManager.prototype.sessionCreated.this):
3151         (WebInspector.ReplayManager.prototype.sessionCreated):
3152         (WebInspector.ReplayManager.prototype.segmentLoaded):
3153         (WebInspector.ReplayManager.prototype.segmentUnloaded):
3154         (WebInspector.ReplayManager.prototype.stopCapturing):
3155         (WebInspector.ReplayManager.prototype.replayToMarkIndex):
3156         (WebInspector.ReplayManager.prototype.segmentCompleted.set catch):
3157         (WebInspector.ReplayManager.prototype.segmentCompleted):
3158         (WebInspector.ReplayManager.prototype.startCapturing):
3159         (WebInspector.ReplayManager.prototype._changeSessionState):
3160
3161 2014-07-26  Joseph Pecoraro  <pecoraro@apple.com>
3162
3163         Remove accidental debugging console.log
3164         https://bugs.webkit.org/show_bug.cgi?id=135315
3165
3166         Reviewed by Alexey Proskuryakov.
3167
3168         * UserInterface/Views/ApplicationCacheFrameContentView.js:
3169         (WebInspector.ApplicationCacheFrameContentView.prototype._sortDataGrid):
3170
3171 2014-07-26  Joseph Pecoraro  <pecoraro@apple.com>
3172
3173         Web Inspector: Timelines performance is very slow, has many forced layouts
3174         https://bugs.webkit.org/show_bug.cgi?id=135313
3175
3176         Reviewed by Timothy Hatcher.
3177
3178         * UserInterface/Views/NavigationItem.js:
3179         (WebInspector.NavigationItem):
3180         (WebInspector.NavigationItem.prototype.get hidden):
3181         (WebInspector.NavigationItem.prototype.set hidden):
3182         Don't have the parent navigation bar update layout if the hidden state did not change.
3183         This greatly reduces the number of forced layouts as timeline nodes are added.
3184
3185         * UserInterface/Views/NavigationSidebarPanel.js:
3186         (WebInspector.NavigationSidebarPanel.prototype.showEmptyContentPlaceholder):
3187         (WebInspector.NavigationSidebarPanel.prototype.hideEmptyContentPlaceholder):
3188         Don't do any work if this is not changing the view.
3189
3190         (WebInspector.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibilitySoon):
3191         (WebInspector.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibility):
3192         (WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
3193         When first selecting a specific timeline (Layout / Scripts) we would have a very long hang
3194         updating the content. Most of this was time spent updating the overflow shadow visibility
3195         because every single tree element addition was causing a layout invalidation and forced layout.
3196         Coalesce all of the tree element adds into a single update at the end.
3197
3198         * UserInterface/Views/TimelineOverview.js:
3199         (WebInspector.TimelineOverview.prototype.updateLayout):
3200         Calculating the visible duration checks offsetLeft. Calculate this once, outside
3201         of a loop down below, to prevent or reduce possible forced layouts.
3202
3203         * UserInterface/Views/TreeOutline.js:
3204         (TreeElement.prototype.revealed):
3205         Prevent doing any work for timeline tree elements outside of the selected time range.
3206         Previously they were considered revealed if a parent was expanded, even though that
3207         parent was hidden. This greatly reduces the amount of work during a recording, since
3208         previously we were potentially doing a forced layout for hidden nodes.
3209
3210         * UserInterface/Views/TimelineSidebarPanel.js:
3211         (WebInspector.TimelineSidebarPanel.prototype.treeElementForRepresentedObject.looselyCompareRepresentedObjects):
3212         Ignore ProfileNode, which may happen here in the Script timeline.
3213
3214 2014-07-23  Brian J. Burg  <burg@cs.washington.edu>
3215
3216         Web Inspector: InspectorBackend's promise-based agent API does not support multiple return values
3217         https://bugs.webkit.org/show_bug.cgi?id=135207
3218
3219         Reviewed by Joseph Pecoraro.
3220
3221         The promise wrapper implementation assumed that the protocol callback supplies a single 'payload'
3222         return value, but InspectorBackend will actually unpack multiple return values as multiple
3223         callback arguments. Set a special flag so it will not try to apply multiple return values.
3224
3225         It would read better if multiple return values could be spread to the resolve callback, but
3226         multiple argument support are not required by the Promises specification, so we won't use them.
3227
3228         * UserInterface/Controllers/ReplayManager.js: Fix uses of promise return values.
3229         (WebInspector.ReplayManager):
3230         * UserInterface/Models/ReplaySession.js:
3231         * UserInterface/Models/ReplaySessionSegment.js:
3232         (WebInspector.ReplaySessionSegment):
3233         * UserInterface/Protocol/InspectorBackend.js:
3234         (InspectorBackend.Command.prototype.promise):
3235
3236 2014-07-21  Saam Barati  <sbarati@apple.com>
3237
3238         Web Inspector: Add esprima to the WebInspector.
3239         https://bugs.webkit.org/show_bug.cgi?id=135098
3240
3241         Reviewed by Joseph Pecoraro.
3242
3243         This patch includes Esprima into the WebInspector and attaches its
3244         exported function onto the WebInspector namespace object. 
3245
3246         * UserInterface/External/Esprima: Added.
3247         * UserInterface/External/Esprima/esprima.js: Added.
3248         (.):
3249         * UserInterface/Main.html:
3250
3251 2014-07-21  Jonathan Wells  <jonowells@apple.com>
3252
3253         Back/Forward arrows (modern) are too large.
3254         https://bugs.webkit.org/show_bug.cgi?id=135073
3255
3256         Reviewed by Joseph Pecoraro.
3257
3258         Changes to adjust new forward and back arrow sizes to be more consistent with the 
3259         universal design language. Moved WebInspector.Platform definition to its own file.
3260         Refactored handling of image versions inside ImageUtilities.js.
3261
3262         * UserInterface/Base/ImageUtilities.js:
3263         (.restoreImage):
3264         (.generateImage):
3265         (generateColoredImagesForCSS):
3266         Make the default image versioning smarter.
3267
3268         * UserInterface/Base/Main.js:
3269         (WebInspector.contentLoaded):
3270         (WebInspector.contentLoaded.WebInspector.Platform.version.toString): Deleted.
3271         (WebInspector.contentLoaded.WebInspector.Platform.toString): Deleted.
3272         * UserInterface/Base/Platform.js: Added.
3273         Move platform information definition into Platform.js.
3274
3275         * UserInterface/Main.html: Include Platform.js.
3276
3277         * UserInterface/Views/ContentBrowser.js:
3278         (WebInspector.ContentBrowser):
3279         * UserInterface/Views/FindBanner.css:
3280         (.find-banner > button > .glyph):
3281         (body.mac-platform.legacy .find-banner > button > .glyph):
3282         (.find-banner > button.segmented.left > .glyph):
3283         (body.mac-platform.legacy .find-banner > button.segmented.left > .glyph):
3284         (.find-banner > button.segmented.right > .glyph):
3285         (body.mac-platform.legacy .find-banner > button.segmented.right > .glyph):
3286         (.find-banner > button.segmented):
3287         (body.mac-platform.legacy .find-banner > button.segmented):
3288         * UserInterface/Views/FindBanner.js:
3289         (WebInspector.FindBanner.prototype._generateButtonsGlyphsIfNeeded):
3290         Size of forward and back arrows adjusted.
3291
3292 2014-07-19  Saam Barati  <sbarati@apple.com>
3293