bf75c3539613ee31b9e6d6223f3b9bb1e51616d5
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
1 2017-04-13  Ross Kirsling  <ross.kirsling@sony.com>
2
3         Web Inspector: No context menu available via ENABLE_INSPECTOR_SERVER
4         https://bugs.webkit.org/show_bug.cgi?id=170705
5
6         Reviewed by Joseph Pecoraro.
7
8         Reintroduce old SoftContextMenu class (removed in r157278) and apply various fixes:
9         - Remove legacy globals and prototype extensions.
10         - Align JS/CSS style with current front-end code.
11         - Update UI and fix UX to replicate the macOS native context menu.
12
13         * Scripts/copy-user-interface-resources.pl:
14         Add copyright line for Sony Interactive Entertainment.
15         
16         * UserInterface/Base/InspectorFrontendHostStub.js:
17         (WebInspector.InspectorFrontendHostStub.prototype.showContextMenu):
18         Use SoftContextMenu.
19         
20         * UserInterface/Main.html:
21         Include SoftContextMenu.
22
23         * UserInterface/Views/SoftContextMenu.css: Added.
24         (.soft-context-menu-glass-pane):
25         (.soft-context-menu):
26         (.soft-context-menu > .item):
27         (.soft-context-menu > .item.disabled):
28         (.soft-context-menu > .item.highlighted):
29         (.soft-context-menu > .item > .checkmark):
30         (.soft-context-menu > .item > .label):
31         (.soft-context-menu > .item > .submenu-arrow):
32         (.soft-context-menu > .separator):
33         (.soft-context-menu > .separator > .line):
34
35         * UserInterface/Views/SoftContextMenu.js: Added.
36         (WebInspector.SoftContextMenu):
37         (WebInspector.SoftContextMenu.prototype.show):
38         (WebInspector.SoftContextMenu.prototype._consumeEvent):
39         (WebInspector.SoftContextMenu.prototype._parentGlassPaneElement):
40         (WebInspector.SoftContextMenu.prototype._createMenuItem):
41         (WebInspector.SoftContextMenu.prototype._createSeparator):
42         (WebInspector.SoftContextMenu.prototype._repositionMenuOnScreen):
43         (WebInspector.SoftContextMenu.prototype._showSubMenu):
44         (WebInspector.SoftContextMenu.prototype._hideSubMenu):
45         (WebInspector.SoftContextMenu.prototype._menuItemContextMenu):
46         (WebInspector.SoftContextMenu.prototype._menuItemMouseDown):
47         (WebInspector.SoftContextMenu.prototype._menuItemMouseUp):
48         (WebInspector.SoftContextMenu.prototype._menuItemMouseOver):
49         (WebInspector.SoftContextMenu.prototype._menuItemMouseOut):
50         (WebInspector.SoftContextMenu.prototype._menuKeyDown):
51         (WebInspector.SoftContextMenu.prototype._glassPaneMouseDown):
52         (WebInspector.SoftContextMenu.prototype._focus):
53         (WebInspector.SoftContextMenu.prototype._triggerAction):
54         (WebInspector.SoftContextMenu.prototype._highlightMenuItem):
55         (WebInspector.SoftContextMenu.prototype._highlightPrevious):
56         (WebInspector.SoftContextMenu.prototype._highlightNext):
57         (WebInspector.SoftContextMenu.prototype._discardMenu):
58         (WebInspector.SoftContextMenu.prototype._discardSubMenus):
59
60 2017-04-13  Brian Burg  <bburg@apple.com>
61
62         Web Inspector: RTL: goto arrow is floated to the wrong side
63         https://bugs.webkit.org/show_bug.cgi?id=170816
64
65         Reviewed by Matt Baker.
66
67         Float it to the other side if necessary.
68
69         * UserInterface/Views/Main.css:
70         (.go-to-link):
71         (body[dir=ltr] .go-to-link:not(.dont-float)):
72         (body[dir=rtl] .go-to-link:not(.dont-float)):
73
74 2017-04-12  Dan Bernstein  <mitz@apple.com>
75
76         [Mac] Future-proof .xcconfig files
77         https://bugs.webkit.org/show_bug.cgi?id=170802
78
79         Reviewed by Tim Horton.
80
81         * Configurations/Base.xcconfig:
82         * Configurations/DebugRelease.xcconfig:
83         * Configurations/Version.xcconfig:
84
85 2017-04-11  Matt Baker  <mattbaker@apple.com>
86
87         Web Inspector: checkboxes in Settings screen use inappropriate layout
88         https://bugs.webkit.org/show_bug.cgi?id=166993
89         <rdar://problem/30002272>
90
91         Reviewed by Devin Rousso.
92
93         * Localizations/en.lproj/localizedStrings.js:
94         New checkbox setting strings.
95
96         * UserInterface/Main.html:
97         New settings view classes.
98
99         * UserInterface/Views/GeneralSettingsView.js: Added.
100         (WebInspector.GeneralSettingsView):
101         (WebInspector.GeneralSettingsView.prototype.initialLayout):
102         Move settings UI creation from SettingsTabContentView.
103
104         * UserInterface/Views/SettingEditor.js: Added.
105         Basic setting editor UI for the following input types: checkbox,
106         number, and select. In the future it may be useful to include
107         additional types, such as radio buttons.
108
109         (WebInspector.SettingEditor):
110         (WebInspector.SettingEditor.createForSetting):
111         (WebInspector.SettingEditor.prototype.get element):
112         (WebInspector.SettingEditor.prototype.get type):
113         (WebInspector.SettingEditor.prototype.get label):
114         (WebInspector.SettingEditor.prototype.get value):
115         (WebInspector.SettingEditor.prototype.set value):
116         (WebInspector.SettingEditor.prototype._createEditorElement):
117
118         * UserInterface/Views/SettingsGroup.js: Added.
119         A container holding editors for one or more WebInspector.Settings.
120         Every editor belongs to a group. SettingsView provides convenience
121         methods for adding settings and groups, so create instances directly
122         shouldn't normally be necessary.
123
124         (WebInspector.SettingsGroup):
125         (WebInspector.SettingsGroup.prototype.get element):
126         (WebInspector.SettingsGroup.prototype.addSetting):
127         (WebInspector.SettingsGroup.prototype.addCustomSetting):
128
129         * UserInterface/Views/SettingsTabContentView.css:
130         Refactored styles to more closely match Xcode settings UI.
131         Eliminated redundant use of "setting" from CSS class names.
132
133         (.content-view.settings):
134         (.content-view.settings .navigation-bar .item.radio.button.text-only):
135         (.content-view.settings .navigation-bar .item.radio.button.text-only.selected):
136         (.content-view.settings > .settings-view > .separator):
137         (.content-view.settings > .settings-view > .container):
138         (.content-view.settings > .settings-view > .container > .title):
139         (body[dir=ltr] .content-view.settings > .settings-view > .container > .title):
140         (body[dir=rtl] .content-view.settings > .settings-view > .container > .title):
141         (.content-view.settings > .settings-view > .container > .editor-group):
142         (.content-view.settings > .settings-view > .container > .editor-group > .editor input):
143         (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
144         (body[dir=ltr] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
145         (body[dir=rtl] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
146         (.content-view.settings > .settings-view > .container > .editor-group > .editor select):
147         (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
148         (body[dir=ltr] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
149         (body[dir=rtl] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
150         (.content-view.settings > .header): Deleted.
151         (.content-view.settings > .separator): Deleted.
152         (.content-view.settings > .setting-container): Deleted.
153         (.content-view.settings > .setting-container.combined): Deleted.
154         (.content-view.settings > .setting-container > .setting-name): Deleted.
155         (body[dir=ltr] .content-view.settings > .setting-container > .setting-name): Deleted.
156         (body[dir=rtl] .content-view.settings > .setting-container > .setting-name): Deleted.
157         (.content-view.settings > .setting-container > .setting-value-controller): Deleted.
158         (.content-view.settings > .setting-container > .setting-value-controller input): Deleted.
159         (.content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]): Deleted.
160         (body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]): Deleted.
161         (body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]): Deleted.
162         (.content-view.settings > .setting-container > .setting-value-controller select): Deleted.
163         (.content-view.settings > .setting-container > .setting-value-controller input[type="number"]): Deleted.
164         (body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]): Deleted.
165         (body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]): Deleted.
166
167         * UserInterface/Views/SettingsTabContentView.js:
168         To better organize the growing number of settings, multiple settings views
169         are now supported, with a navigation bar for switching between them. For
170         now there is a single "General" setting view, and and the navigation bar
171         is hidden. Adding a second view will cause the bar to be shown.
172
173         (WebInspector.SettingsTabContentView):
174         (WebInspector.SettingsTabContentView.prototype.get type):
175         (WebInspector.SettingsTabContentView.prototype.get selectedSettingsView):
176         (WebInspector.SettingsTabContentView.prototype.set selectedSettingsView):
177         (WebInspector.SettingsTabContentView.prototype.addSettingsView):
178         (WebInspector.SettingsTabContentView.prototype._navigationItemSelected):
179         (WebInspector.SettingsTabContentView.prototype.layout): Deleted.
180         No longer needed.
181
182         * UserInterface/Views/SettingsView.js: Added.
183         Base class for displaying editing UI for a collection of related
184         WebInspector.Setting objects.
185
186         (WebInspector.SettingsView):
187         (WebInspector.SettingsView.prototype.get identifier):
188         (WebInspector.SettingsView.prototype.get displayName):
189         A string suitable for display in a NavigationBar showing a list of
190         SettingsViews (e.g. "General", "Text Editing", "Fonts & Colors", etc).
191
192         (WebInspector.SettingsView.prototype.addSetting):
193         Add UI for a setting, consisting of a title, an editor appropriate for
194         the setting's value type, and optional label and formatting options.
195         For example:
196
197             addSetting("Setting 1:", new WebInspector.Setting(…, true), "Item one")
198             addSetting("Setting 2:", new WebInspector.Setting(…, 1), "units")
199
200         will create a checkbox and number input field:
201
202             Setting 1: [x] Item one
203             Setting 2: [  1] units
204
205         (WebInspector.SettingsView.prototype.addCustomSetting):
206         Add UI for a specific editor type, with optional formatting options.
207         A setting can be updated in response to changes in the editor's value.
208
209         (WebInspector.SettingsView.prototype.addGroup):
210         Add a group, for listing multiple settings under one title. For example:
211
212            group = addGroup("Title:")
213            group.addSetting(new WebInspector.Setting(…, true), "Item one")
214            group.addSetting(new WebInspector.Setting(…, false), "Item two")
215
216         will create two checkboxes under the same title:
217
218            Title: [x] Item one
219                   [ ] Item two
220
221         (WebInspector.SettingsView.prototype.addSeparator):
222         Add vertical space between two settings or groups.
223
224 2017-04-10  Nikita Vasilyev  <nvasilyev@apple.com>
225
226         Web Inspector: WebSockets: Don't clip data in the data grid
227         https://bugs.webkit.org/show_bug.cgi?id=170559
228
229         Reviewed by Timothy Hatcher.
230
231         Long lines without spaces should be broken down into several lines instead of being ellipsized.
232
233         * UserInterface/Views/WebSocketContentView.css:
234         (.web-socket.content-view > .data-grid td.data-column,):
235
236 2017-04-10  Nikita Vasilyev  <nvasilyev@apple.com>
237
238         Web Inspector: Placeholder text is clipped in the 'Enter Class Name' field at the bottom of Rules style sidebar in some localizations
239         https://bugs.webkit.org/show_bug.cgi?id=167641
240         <rdar://problem/26541953>
241
242         Reviewed by Joseph Pecoraro.
243
244         Make the "Enter Class Name" text field span the entire width of the Styles sidebar.
245
246         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
247         (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class):
248         (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
249         (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > input[type="checkbox"]): Deleted.
250         (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .add-class-icon): Deleted.
251         (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class.active > .add-class-icon,): Deleted.
252         * UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
253         (WebInspector.CSSStyleDetailsSidebarPanel.prototype.initialLayout):
254         Remove the checkbox, which didn't do anything, and the plus icon. Make the "Enter Class Name" text field visible by default.
255
256 2017-04-10  Jon Lee  <jonlee@apple.com>
257
258         Update localizable strings to "full screen" from "fullscreen"
259         https://bugs.webkit.org/show_bug.cgi?id=170675
260         rdar://problem/28207034
261
262         Reviewed by Antoine Quint.
263
264         * UserInterface/Models/ScriptTimelineRecord.js:
265         (WebInspector.ScriptTimelineRecord.EventType.displayName): For localizable strings, it should consistently be
266         "full screen" instead of "fullscreen".
267
268 2017-04-09  Devin Rousso  <webkit@devinrousso.com>
269
270         Web Inspector: tabbing in Styles sidebar is broken when additional ":" and ";" are in the property value
271         https://bugs.webkit.org/show_bug.cgi?id=170184
272
273         Reviewed by Matt Baker.
274
275         New tests:
276         - inspector/unit-tests/text-utilities.html
277
278         * UserInterface/Base/TextUtilities.js: Added.
279         (WebInspector.rangeForNextCSSNameOrValue):
280         Consolidate logic for finding the next range to highlight in a CSS string given a starting index.
281
282         * UserInterface/Main.html:
283         * UserInterface/Test.html:
284         Include TextUtilities.
285
286         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
287         (WebInspector.CSSStyleDeclarationTextEditor.prototype._highlightNextNameOrValue):
288         (WebInspector.CSSStyleDeclarationTextEditor.prototype._rangeForNextNameOrValue):
289         (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseUp):
290         Utilize TextUtilities for range-finding logic.
291
292 2017-04-08  Simon Fraser  <simon.fraser@apple.com>
293
294         Unprefix CSS cursor values grab and grabbing
295         https://bugs.webkit.org/show_bug.cgi?id=170543
296
297         Reviewed by Jon Lee.
298
299         Sort the cursor autosuggestions to match the order in the spec, and add the unprefixed
300         grab and grabbing values.
301
302         * UserInterface/Models/CSSKeywordCompletions.js:
303
304 2017-04-07  Matt Baker  <mattbaker@apple.com>
305
306         Web Inspector: DOM/XHR breakpoint tree elements shouldn't persist their represented objects
307         https://bugs.webkit.org/show_bug.cgi?id=170611
308         <rdar://problem/31506161>
309
310         Reviewed by Joseph Pecoraro.
311
312         Prevent tree elements for DOM and XHR breakpoints from persisting their
313         represented objects.
314
315         * UserInterface/Views/ContentView.js:
316         (WebInspector.ContentView.createFromRepresentedObject):
317         * UserInterface/Views/NavigationSidebarPanel.js:
318         (WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
319
320 2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>
321
322         Web Inspector: Source Map Resources should show up in the Debugger Sources list
323         https://bugs.webkit.org/show_bug.cgi?id=170581
324         <rdar://problem/31269140>
325
326         Reviewed by Matt Baker.
327
328         * UserInterface/Views/DebuggerSidebarPanel.js:
329         (WebInspector.DebuggerSidebarPanel):
330         Include SourceMapResources in the DebuggerSidebar's Sources tree outline.
331
332 2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>
333
334         Web Inspector: Show all headers in the Request Headers section of the Resource details sidebar
335         https://bugs.webkit.org/show_bug.cgi?id=16531
336         <rdar://problem/5712895>
337
338         Reviewed by Timothy Hatcher.
339
340         * UserInterface/Models/Resource.js:
341         (WebInspector.Resource.prototype.updateWithMetrics):
342         Update request headers if provided in metrics.
343
344 2017-04-06  Matt Baker  <mattbaker@apple.com>
345
346         Web Inspector: Reorder Debugger tab sidebar panels: Scope Chain, Resource, Probes
347         https://bugs.webkit.org/show_bug.cgi?id=170418
348         <rdar://problem/31410771>
349
350         Reviewed by Timothy Hatcher.
351
352         Maintain the sidebar panel order defined by TabContentView when adding
353         and removing panels.
354
355         * UserInterface/Views/ContentBrowserTabContentView.js:
356         (WebInspector.ContentBrowserTabContentView.prototype.showDetailsSidebarPanels):
357         Insert sidebar panel based on the panel order defined by TabContentView.
358
359         * UserInterface/Views/DebuggerTabContentView.js:
360         (WebInspector.DebuggerTabContentView):
361
362         * UserInterface/Views/Sidebar.js:
363         (WebInspector.Sidebar.prototype.addSidebarPanel):
364         Implemented as an insert at the end.
365         (WebInspector.Sidebar.prototype.insertSidebarPanel):
366         Allow inserting into the sidebar panel collection.
367         (WebInspector.Sidebar.prototype.removeSidebarPanel):
368         Remove unused return value.
369
370 2017-04-05  Matt Baker  <mattbaker@apple.com>
371
372         Web Inspector: Probe values not showing in sidebar
373         https://bugs.webkit.org/show_bug.cgi?id=170143
374
375         Reviewed by Joseph Pecoraro.
376
377         Force the DataGrid to refresh its layout after adding a probe sample.
378
379         * UserInterface/Views/ProbeSetDataGrid.css:
380         (.details-section.probe-set .data-grid tr.data-updated):
381         (.details-section.probe-set .data-grid > tr.data-updated): Deleted.
382         Drive-by fix: selector didn't match any rows.
383
384         * UserInterface/Views/ProbeSetDataGrid.js:
385         (WebInspector.ProbeSetDataGrid.prototype._updateNodeForFrame):
386
387 2017-04-05  Matt Baker  <mattbaker@apple.com>
388
389         Web Inspector: XHR breakpoints should be global
390         https://bugs.webkit.org/show_bug.cgi?id=170033
391
392         Reviewed by Joseph Pecoraro.
393
394         * Localizations/en.lproj/localizedStrings.js:
395         Shorten XHR breakpoint tree element "URL contains:" title to "URL".
396
397         * UserInterface/Controllers/DOMDebuggerManager.js:
398         Change storage of XHR breakpoints from a map to a simple array.
399         (WebInspector.DOMDebuggerManager):
400         (WebInspector.DOMDebuggerManager.prototype.get xhrBreakpoints):
401         (WebInspector.DOMDebuggerManager.prototype.addXHRBreakpoint):
402         Dispatch the "breakpoint added" event immediately after adding the
403         breakpoint, rather than waiting for it to resolve.
404
405         (WebInspector.DOMDebuggerManager.prototype.removeXHRBreakpoint):
406         (WebInspector.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
407         (WebInspector.DOMDebuggerManager.prototype._resolveXHRBreakpoint):
408         (WebInspector.DOMDebuggerManager.prototype._saveXHRBreakpoints):
409         (WebInspector.DOMDebuggerManager.prototype._mainResourceDidChange):
410
411         * UserInterface/Models/XHRBreakpoint.js:
412         An XHR breakpoint should not be associated with a particular document.
413         (WebInspector.XHRBreakpoint):
414         (WebInspector.XHRBreakpoint.prototype.get serializableInfo):
415         (WebInspector.XHRBreakpoint.prototype.saveIdentityToCookie):
416         (WebInspector.XHRBreakpoint.prototype.get documentURL): Deleted.
417
418         * UserInterface/Views/DebuggerSidebarPanel.css:
419         Use default emdash-separated title/subtitle style instead of the
420         custom "URL contains:" labeling.
421
422         (.sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle):
423         (.sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle:before): Deleted.
424         (body[dir=ltr] .sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle): Deleted.
425         (body[dir=rtl] .sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle): Deleted.
426
427         * UserInterface/Views/DebuggerSidebarPanel.js:
428         (WebInspector.DebuggerSidebarPanel.prototype.willDismissPopover):
429         (WebInspector.DebuggerSidebarPanel):
430
431         * UserInterface/Views/XHRBreakpointTreeElement.js:
432         (WebInspector.XHRBreakpointTreeElement):
433
434 2017-04-04  Brian Burg  <bburg@apple.com>
435
436         Web Inspector: RTL: layout issues in Type Profiler popovers
437         https://bugs.webkit.org/show_bug.cgi?id=170467
438
439         Reviewed by Timothy Hatcher.
440
441         Flip some margins and padding. Remove the -1px leading margin for
442         the prototype disclosure button, as it is unnecessary and looks
443         (more) wrong when in RTL.
444
445         * UserInterface/Views/TypeTreeElement.css:
446         (.item.type-tree-element > .disclosure-button):
447         (.item.type-tree-element.prototype):
448         (body[dir=ltr] .item.type-tree-element.prototype):
449         (body[dir=rtl] .item.type-tree-element.prototype):
450         * UserInterface/Views/TypeTreeView.css:
451         (.tree-outline.type):
452         (body[dir=ltr] .tree-outline.type):
453         (body[dir=rtl] .tree-outline.type):
454         (.tree-outline.type li .empty-message):
455         (body[dir=ltr] .tree-outline.type li .empty-message):
456         (body[dir=rtl] .tree-outline.type li .empty-message):
457
458 2017-04-04  Joseph Pecoraro  <pecoraro@apple.com>
459
460         Web Inspector: Include more Network information in Resource Details Sidebar
461         https://bugs.webkit.org/show_bug.cgi?id=170470
462
463         Reviewed by Brian Burg.
464
465         * Localizations/en.lproj/localizedStrings.js:
466         Updated localized strings.
467
468         * UserInterface/Models/Resource.js:
469         (WebInspector.Resource.displayNameForProtocol):
470         (WebInspector.Resource.displayNameForPriority):
471         Aggregate all display name helpers here.
472
473         * UserInterface/Views/DetailsSectionSimpleRow.js:
474         (WebInspector.DetailsSectionSimpleRow.prototype.get tooltip):
475         (WebInspector.DetailsSectionSimpleRow.prototype.set tooltip):
476         Allow setting a tooltip on the value.
477
478         * UserInterface/Views/NetworkGridContentView.css:
479         (.cache-type):
480         Cache type shows up in multiple places. Simplify the CSS to apply anywhere.
481
482         * UserInterface/Views/NetworkGridContentView.js:
483         (WebInspector.NetworkGridContentView):
484         * UserInterface/Views/NetworkTimelineView.js:
485         (WebInspector.NetworkTimelineView):
486         Updated column names.
487
488         * UserInterface/Views/ResourceDetailsSidebarPanel.js:
489         (WebInspector.ResourceDetailsSidebarPanel):
490         (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
491         (WebInspector.ResourceDetailsSidebarPanel.prototype._cachedRowValue):
492         Include more detail information in the sidebar.
493
494         * UserInterface/Views/ResourceTimelineDataGridNode.js:
495         (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
496         (WebInspector.ResourceTimelineDataGridNode.prototype._displayNameForPriority): Deleted.
497         Use shared code for display names.
498
499 2017-04-04  Brian Burg  <bburg@apple.com>
500
501         Web Inspector: RTL: fix alignment of close button shown while docked
502         https://bugs.webkit.org/show_bug.cgi?id=170472
503
504         Reviewed by Matt Baker.
505
506         * UserInterface/Views/Toolbar.css:
507         (.toolbar .control-section):
508         (body[dir=ltr] .toolbar .control-section):
509         (body[dir=rtl] .toolbar .control-section):
510
511 2017-04-04  Brian Burg  <bburg@apple.com>
512
513         Web Inspector: RTL: layout issues in debugger dashboard, arrows are on wrong side
514         https://bugs.webkit.org/show_bug.cgi?id=170425
515
516         Reviewed by Devin Rousso.
517
518         We need to move the up/down dashboard arrows to the trailing side for RTL.
519         Clean up some messy spacing rules so that the source location does not
520         overlap the arrows or get too close to the function icon.
521
522         * UserInterface/Views/DashboardContainerView.css:
523         (.toolbar .dashboard):
524         (body[dir=ltr] .toolbar .dashboard):
525         (body[dir=rtl] .toolbar .dashboard):
526         (.dashboard-container .advance-arrow):
527         (body[dir=ltr] .dashboard-container .advance-arrow):
528         (body[dir=rtl] .dashboard-container .advance-arrow):
529         (.toolbar.label-only .dashboard-container .advance-arrow):
530         (body[dir=ltr] .toolbar.label-only .dashboard-container .advance-arrow):
531         (body[dir=rtl] .toolbar.label-only .dashboard-container .advance-arrow):
532         * UserInterface/Views/DebuggerDashboardView.css:
533         (.toolbar .dashboard.debugger):
534         (body[dir=ltr] .toolbar .dashboard.debugger):
535         (body[dir=rtl] .toolbar .dashboard.debugger):
536         (.dashboard.debugger .navigation-bar):
537         (body[dir=ltr] .dashboard.debugger .navigation-bar):
538         (body[dir=rtl] .dashboard.debugger .navigation-bar):
539         (.dashboard.debugger > .location):
540         (.dashboard.debugger > .location > :first-child):
541         (body[dir=ltr] .dashboard.debugger > .location > :last-child):
542         (body[dir=rtl] .dashboard.debugger > .location > :last-child):
543         (.dashboard.debugger > .location .function-icon):
544         (body[dir=ltr] .dashboard.debugger > .location .function-icon):
545         (body[dir=rtl] .dashboard.debugger > .location .function-icon):
546         (.dashboard.debugger > .location .go-to-link):
547
548 2017-04-03  Brian Burg  <bburg@apple.com>
549
550         Web Inspector: RTL: results in Search navigation sidebar have misplaced highlights
551         https://bugs.webkit.org/show_bug.cgi?id=170292
552
553         Reviewed by Timothy Hatcher.
554
555         * UserInterface/Models/SourceCodeSearchMatchObject.js:
556         (WebInspector.SourceCodeSearchMatchObject.prototype.get className):
557         * UserInterface/Views/SearchIcons.css:
558         (.source-code-match .icon):
559         (.source-code-match-icon .icon): Deleted.
560         Remove -icon suffix from the class name since the class is attached to a result
561         and is not specific to the icon displayed within the result <li>.
562
563         * UserInterface/Views/SearchResultTreeElement.js:
564         (WebInspector.SearchResultTreeElement.truncateAndHighlightTitle):
565         Flip the leading and trailing context in RTL so that the highlight is not overflowed
566         to the left when too much context is included on the right side. Less context must be
567         used in RTL because we must not overflow to the right, as it may hide the result. And,
568         we don't know the exact starting character either as it may be overflowed to the right
569         as the user resizes the expanded sidebar larger or smaller. So show less context to
570         be conservative about never overflowing the highlighted result string.
571
572         * UserInterface/Views/SearchSidebarPanel.css:
573         (.sidebar > .panel.navigation.search .item.source-code-match .title):
574         When in RTL, show source code matches as LTR with text-align to right.
575
576 2017-04-03  Devin Rousso  <webkit@devinrousso.com>
577
578         Web Inspector: clicking on the body of a CSS rule after editing the selector causes the section to disappear
579         https://bugs.webkit.org/show_bug.cgi?id=169803
580
581         Reviewed by Timothy Hatcher.
582
583         * UserInterface/Views/CSSStyleDeclarationSection.js:
584         (WebInspector.CSSStyleDeclarationSection.prototype._handleKeyDown):
585         (WebInspector.CSSStyleDeclarationSection.prototype._handleBlur):
586         Keep the section marked as `_editorActive` if the action taken would still place focus
587         within the section (selector or properties).  Doing so will prevent it from being removed.
588
589 2017-04-03  Brian Burg  <bburg@apple.com>
590
591         Web Inspector: RTL: hierarchical path component labels should guess directionality based on content
592         https://bugs.webkit.org/show_bug.cgi?id=170298
593
594         Reviewed by Timothy Hatcher.
595
596         * UserInterface/Views/HierarchicalPathComponent.js:
597         (WebInspector.HierarchicalPathComponent):
598         Use dir="auto" since this will properly set 'unicode-bidi:isolate' for form elements too.
599         This is applied to the title label and to the <select> for the path component.
600
601 2017-04-03  Matt Baker  <mattbaker@apple.com>
602
603         Web Inspector: Show additional pause reason details for DOM "subtree modified" breakpoint
604         https://bugs.webkit.org/show_bug.cgi?id=169479
605
606         Reviewed by Timothy Hatcher.
607
608         * Localizations/en.lproj/localizedStrings.js:
609         New Pause Reason UI strings.
610
611         * UserInterface/Views/DebuggerSidebarPanel.js:
612         (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
613         Include a link for the target node when breaking for subtree modifications.
614         This is either the parent of a node being inserted, or a node that is
615         being removed.
616
617 2017-04-03  Devin Rousso  <webkit@devinrousso.com>
618
619         Web Inspector: showing the Find banner doesn't immediately focus it
620         https://bugs.webkit.org/show_bug.cgi?id=169804
621
622         Reviewed by Matt Baker.
623
624         * UserInterface/Base/Main.js:
625         (WebInspector._focusChanged):
626         Slightly change the logic from <https://webkit.org/b/168119> (r213689) to not prevent a new
627         selection if the focus change target is an element from WebInspector.startEditing.
628
629 2017-04-03  Nikita Vasilyev  <nvasilyev@apple.com>
630
631         Web Inspector: WebSockets: Don't store binary frames in memory since they are never shown
632         https://bugs.webkit.org/show_bug.cgi?id=169649
633         <rdar://problem/31053069>
634
635         Reviewed by Brian Burg.
636
637         * UserInterface/Models/WebSocketResource.js:
638         (WebInspector.WebSocketResource.prototype.addFrame):
639
640 2017-04-03  Devin Rousso  <webkit@devinrousso.com>
641
642         Web Inspector: Preference for Auto Showing Scope Chain sidebar on pause
643         https://bugs.webkit.org/show_bug.cgi?id=149487
644
645         Reviewed by Timothy Hatcher.
646
647         * Localizations/en.lproj/localizedStrings.js:
648
649         * UserInterface/Base/Setting.js:
650         * UserInterface/Views/SettingsTabContentView.js:
651         (WebInspector.SettingsTabContentView.prototype.layout):
652         Add WebInspector.Setting for showing Scope Chain on pause.
653
654         * UserInterface/Base/Main.js:
655         (WebInspector.showDebuggerTab):
656         (WebInspector._debuggerDidPause):
657         * UserInterface/Views/SourceCodeTextEditor.js:
658         (WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
659         Modify parameters to use a dictionary of options instead of just a single value.  In doing
660         so, add support for a value that will show the Scope Chain sidebar.
661
662         * UserInterface/Views/SettingsTabContentView.css:
663         (.content-view.settings):
664         (.content-view.settings > .header):
665         Drive-by: add padding to bottom of Settings tab so that additional scroll space is mirrored.
666
667 2017-04-03  Brian Burg  <bburg@apple.com>
668
669         Web Inspector: RTL: layout issues in call frame tree elements and async call stacks
670         https://bugs.webkit.org/show_bug.cgi?id=170419
671
672         Reviewed by Matt Baker.
673
674         * UserInterface/Views/CallFrameTreeElement.css:
675         (.tree-outline .item.call-frame .status):
676         (body[dir=ltr] .tree-outline .item.call-frame .status):
677         (body[dir=rtl] .tree-outline .item.call-frame .status):
678         Flip the current call frame indicator and make sure it sticks to the leading edge.
679
680         (.tree-outline .item.call-frame.async-boundary):
681         (body[dir=ltr] .tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary):
682         (body[dir=rtl] .tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary):
683         (.tree-outline .item.call-frame.async-boundary .icon):
684         (body[dir=ltr] .tree-outline .item.call-frame.async-boundary .icon):
685         (body[dir=rtl] .tree-outline .item.call-frame.async-boundary .icon):
686         Flip the icon's padding.
687
688         (.tree-outline .item.call-frame.async-boundary::after):
689         (body[dir=ltr] .tree-outline .item.call-frame.async-boundary::after):
690         (body[dir=rtl] .tree-outline .item.call-frame.async-boundary::after):
691         (.tree-outline .item.call-frame.async-boundary::before):
692         (body[dir=ltr] .tree-outline .item.call-frame.async-boundary::before):
693         (body[dir=rtl] .tree-outline .item.call-frame.async-boundary::before):
694         (.tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary): Deleted.
695         Fix the leading and trailing horizontal rules so they have correct spacing.
696
697         * UserInterface/Views/CallFrameView.css:
698         (.call-frame .icon): Remove redundant property.
699
700         * UserInterface/Views/DebuggerSidebarPanel.css:
701         (.sidebar > .panel.navigation.debugger .tree-outline.single-thread):
702         (body[dir=ltr] .sidebar > .panel.navigation.debugger .tree-outline.single-thread):
703         (body[dir=rtl] .sidebar > .panel.navigation.debugger .tree-outline.single-thread):
704         Fix the leading unindent for call tree frame elements.
705
706 2017-04-03  Matt Baker  <mattbaker@apple.com>
707
708         Web Inspector: Elements tab: show indicators for hidden DOM breakpoints
709         https://bugs.webkit.org/show_bug.cgi?id=168761
710
711         Reviewed by Timothy Hatcher.
712
713         * Localizations/en.lproj/localizedStrings.js:
714         New DOM breakpoint content menu item.
715
716         * UserInterface/Views/DOMTreeContentView.css:
717         (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.subtree):
718         (.content-view.dom-tree .tree-outline.dom li.expanded .status-image.breakpoint.subtree):
719         New styles for collapsed breakpoint marker.
720
721         * UserInterface/Views/DOMTreeElement.js:
722         (WebInspector.DOMTreeElement):
723         (WebInspector.DOMTreeElement.prototype.set breakpointStatus):
724         If the status change indicates the only breakpoint was added or removed,
725         update subtree breakpoint counts on the element's parent chain.
726
727         (WebInspector.DOMTreeElement.prototype.revealAndHighlight):
728         Reveal the tree element, and add a highlighted line animation
729         identical to the one used used by TextEditor.
730
731         (WebInspector.DOMTreeElement.prototype.subtreeBreakpointCountDidChange):
732         (WebInspector.DOMTreeElement.prototype.updateSelectionArea):
733         Selection area should be updated when animating the element highlight.
734         (WebInspector.DOMTreeElement.prototype.onreveal):
735         Animate highlight if needed.
736         (WebInspector.DOMTreeElement.prototype._updateBreakpointStatus):
737         (WebInspector.DOMTreeElement.prototype._statusImageClicked):
738         Do nothing when clicking the collapsed breakpoint marker.
739         (WebInspector.DOMTreeElement.prototype._statusImageContextmenu):
740         Add "Reveal Breakpoint" menu item. Reveals the first descendant
741         with at least one breakpoint.
742
743         (WebInspector.DOMTreeElement.prototype._highlightAnimationEnd):
744
745         * UserInterface/Views/DOMTreeOutline.css:
746         (@keyframes dom-tree-outline-highlight-fadeout):
747         (.highlight .selection-area):
748         Styles for highlight fade animation.
749
750         * UserInterface/Views/TreeElement.js:
751         (WebInspector.TreeElement.prototype.selfOrDescendant):
752         * UserInterface/Views/TreeOutline.js:
753         (WebInspector.TreeOutline.prototype.selfOrDescendant):
754         Find a node matching a predicate.
755
756 2017-04-03  Matt Baker  <mattbaker@apple.com>
757
758         Web Inspector: DetailsSection should hide header "options" when collapsed
759         https://bugs.webkit.org/show_bug.cgi?id=170029
760
761         Reviewed by Timothy Hatcher.
762
763         * UserInterface/Views/DOMNodeDetailsSidebarPanel.css:
764         (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
765         (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners.collapsed > .header > .filter): Deleted.
766         DetailsSection is responsible for hiding options when collapsed.
767
768         * UserInterface/Views/DebuggerSidebarPanel.css:
769         (.sidebar > .panel.navigation.debugger .details-section.paused-reason.collapsed > .header > .options):
770
771         * UserInterface/Views/DetailsSection.css:
772         (body[dir=ltr] .details-section > .header > .options,):
773         (body[dir=ltr] .details-section > .header::before,):
774         (.details-section.collapsed  > .header > .options):
775         (body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow),): Deleted.
776         (.details-section.collapsed  > .header > label): Deleted.
777         Removed unnecessary rules. The "options" class covers these cases.
778
779         * UserInterface/Views/DetailsSection.js:
780         (WebInspector.DetailsSection.prototype.get titleElement):
781         (WebInspector.DetailsSection.prototype.set titleElement):
782         Added title element customization so that the hack used by ProbeSetDetailsSection
783         to get a link into the title can be removed. Yuck!
784
785         * UserInterface/Views/ProbeSetDetailsSection.js:
786         (WebInspector.ProbeSetDetailsSection):
787         (WebInspector.ProbeSetDetailsSection.prototype._updateLinkElement):
788         Use the new DetailsSection title element setter.
789
790         * UserInterface/Views/VisualStyleDetailsPanel.css:
791         (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > .options):
792         (.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > .visual-style-section-clear): Deleted.
793         (.sidebar > .panel.details.css-style .visual > .details-section .details-section.collapsed > .header > .visual-style-section-clear,): Deleted.
794         Remove the "visual-style-section-clear" class, as it's no longer needed.
795
796         * UserInterface/Views/VisualStyleDetailsPanel.js:
797         (WebInspector.VisualStyleDetailsPanel.prototype._generateSection.createOptionsElement):
798         (WebInspector.VisualStyleDetailsPanel.prototype._generateSection):
799
800 2017-04-03  Joseph Pecoraro  <pecoraro@apple.com>
801
802         Web Inspector: "Space" is not localizable in Timelines record button tooltips
803         https://bugs.webkit.org/show_bug.cgi?id=170420
804         <rdar://problem/30871371>
805
806         Reviewed by Timothy Hatcher.
807
808         * UserInterface/Base/LoadLocalizedStrings.js:
809         (WebInspector.unlocalizedString):
810         (WebInspector.UIString):
811         * UserInterface/Base/Main.js:
812         Move UIString / unlocalizedString to LoadLocalizedString.js.
813         They may be needed before Main.js has introduced it.
814
815         * UserInterface/Test/Test.js:
816         Provide a default implementaiton of unlocalizedString.
817
818         * Localizations/en.lproj/localizedStrings.js:
819         * UserInterface/Models/KeyboardShortcut.js:
820         Most keys use a symbol to represent the key. "Space" was the one
821         exception, so use a localized string.
822
823 2017-04-03  Joseph Pecoraro  <pecoraro@apple.com>
824
825         Web Inspector: Tooltip for close tab button should match Safari
826         https://bugs.webkit.org/show_bug.cgi?id=170417
827         <rdar://problem/31378423>
828
829         Reviewed by Matt Baker.
830
831         * Localizations/en.lproj/localizedStrings.js:
832         * UserInterface/Views/GeneralTabBarItem.js:
833         (WebInspector.GeneralTabBarItem):
834         Updated tooltip to match Safari's most descriptive tooltip.
835
836 2017-04-03  Devin Rousso  <webkit@devinrousso.com>
837
838         REGRESSION (r214354): Web Inspector: WebSocket connection icon obscures close content view icon
839         https://bugs.webkit.org/show_bug.cgi?id=170104
840
841         Reviewed by Joseph Pecoraro.
842
843         * UserInterface/Views/ResourceTreeElement.css:
844         (.item.resource.resource-type-websocket .status > .ready-state):
845         (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.open):
846         (.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .ready-state.open):
847         (body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.open):
848         (.item.resource.resource-type-websocket:not(.selected) .status .ready-state.connecting):
849         (.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .ready-state.connecting):
850         (body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.connecting):
851         (.item.resource.resource-type-websocket .status > div): Deleted.
852         (.item.resource.resource-type-websocket:not(.selected) .status .open): Deleted.
853         (.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .open): Deleted.
854         (body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .open): Deleted.
855         (.item.resource.resource-type-websocket:not(.selected) .status .connecting): Deleted.
856         (.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .connecting): Deleted.
857         (body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .connecting): Deleted.
858
859         * UserInterface/Views/WebSocketResourceTreeElement.js:
860         (WebInspector.WebSocketResourceTreeElement.prototype._updateConnectionStatus):
861         Apply an additional CSS class to the connection indicator element so that the styles can be
862         applied more specifically to just that element.
863
864 2017-04-01  Jon Lee  <jonlee@apple.com>
865
866         Add missing text styles
867         https://bugs.webkit.org/show_bug.cgi?id=170295
868         rdar://problem/30219503
869
870         Reviewed by Dean Jackson.
871
872         * UserInterface/Models/CSSKeywordCompletions.js: Update keyword completions
873
874 2017-04-01  Dan Bernstein  <mitz@apple.com>
875
876         Localizable strings files are out of date
877         https://bugs.webkit.org/show_bug.cgi?id=170383
878
879         Reviewed by Tim Horton.
880
881         Ran update-webkit-localizable-strings.
882
883         * Localizations/en.lproj/localizedStrings.js:
884
885 2017-03-30  Matt Baker  <mattbaker@apple.com>
886
887         Web Inspector: Styles sidebar warning icon appears inside property value text
888         https://bugs.webkit.org/show_bug.cgi?id=170281
889
890         Reviewed by Timothy Hatcher.
891
892         Style rule warning icon should always come before the property name,
893         regardless of which property part (name/value) the error is for. This
894         information is conveyed by the red strikethrough, which is applied to
895         the property name, value, or both.
896
897         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
898
899 2017-03-29  Nikita Vasilyev  <nvasilyev@apple.com>
900
901         Web Inspector: WebSockets: Messages log should remain being scrolled to the bottom when a new message is added
902         https://bugs.webkit.org/show_bug.cgi?id=170090
903
904         Reviewed by Matt Baker.
905
906         Adding many Web Socket messages quickly can create a performance bottleneck. Batch addition of DataGrid nodes
907         using requestAnimationFrame, and scroll to the bottom of the DataGrid at most once per a batch update.
908
909         * UserInterface/Views/WebSocketContentView.js:
910         (WebInspector.WebSocketContentView):
911         (WebInspector.WebSocketContentView.prototype.shown):
912         (WebInspector.WebSocketContentView.prototype.hidden):
913         (WebInspector.WebSocketContentView.prototype._updateFramesSoon):
914         Batch WebSocketContentView DOM modifications using requestAnimationFrame.
915
916         (WebInspector.WebSocketContentView.prototype._updateFrames):
917         (WebInspector.WebSocketContentView.prototype._addFrame):
918         (WebInspector.WebSocketContentView.prototype.addFrame): Deleted.
919         Make addFrame method private since it isn't used anywhere outside of this class.
920
921         (WebInspector.WebSocketContentView.prototype._updateState): Deleted.
922         Make _updateState a part of _updateFramesSoon.
923
924 2017-03-29  Sam Brodkin  <isam@apple.com>
925
926         Web Inspector: Network tab content view is blank after reload
927         https://bugs.webkit.org/show_bug.cgi?id=168029
928
929         Reviewed by Brian Burg.
930
931         * UserInterface/Views/NetworkSidebarPanel.js:
932         (WebInspector.NetworkSidebarPanel.prototype._networkTimelineReset):
933         showDefaultContentView() which shows networkGridView in the contentView was not being called
934         when the NetworkSidebarPanel was not visible. Removing the if statement always shows the
935         networkGridView which fixes the bug. This wouldn't be easy to regression test.
936
937 2017-03-28  Brian Burg  <bburg@apple.com>
938
939         Web Inspector: RTL: keyboard shortcuts with directionality need to be flipped (forward/back, etc)
940         https://bugs.webkit.org/show_bug.cgi?id=165761
941
942         Reviewed by Matt Baker.
943
944         Original patch by Devin Rousso.
945
946         * UserInterface/Views/ContentBrowser.js:
947         (WebInspector.ContentBrowser):
948         * UserInterface/Views/TabBrowser.js:
949         (WebInspector.TabBrowser):
950         Flip the functionality of keyboard shortcuts when in RTL so that the action of
951         pressing the left or right arrows/curly braces matches what happens when the
952         corresponding left or right buttons are clicked.
953
954         * UserInterface/Views/DataGrid.js:
955         (WebInspector.DataGrid.prototype._keyDown):
956         * UserInterface/Views/LogContentView.js:
957         (WebInspector.LogContentView.prototype._keyDown):
958         * UserInterface/Views/TreeOutline.js:
959         (WebInspector.TreeOutline.prototype._treeKeyDown):
960         Flip the Left and Right keyboard shortcuts to expand/collapse the selected item when in RTL.
961
962 2017-03-28  Brian Burg  <bburg@apple.com>
963
964         Web Inspector: Add "Disable Caches" option that only applies to the inspected page while Web Inspector is open
965         https://bugs.webkit.org/show_bug.cgi?id=169865
966         <rdar://problem/31250573>
967
968         Reviewed by Joseph Pecoraro.
969
970         Hook up a button in the Network tab to WebCore::Page's resourceCachingDisabled flag.
971         If it is active, resource loads are subject to a cache policy that never uses a cached response.
972
973         * Localizations/en.lproj/localizedStrings.js:
974         Add localized strings.
975
976         * UserInterface/Base/Main.js:
977         (WebInspector.loaded):
978         Add a setting for whether to disable resource caching and inform the backend
979         of our preference. If someone changes the setting, tell the backend again.
980
981         * UserInterface/Views/NetworkGridContentView.js:
982         (WebInspector.NetworkGridContentView):
983         (WebInspector.NetworkGridContentView.prototype.get navigationItems):
984         (WebInspector.NetworkGridContentView.prototype._resourceCachingDisabledSettingChanged):
985         (WebInspector.NetworkGridContentView.prototype._toggleDisableResourceCache):
986         Add a new activatable navigation item that toggles disableResourceCaching for the inspected page.
987
988         * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
989         * UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
990         * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
991         * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
992         * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
993         * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
994         * Versions/Inspector-iOS-10.0.json:
995         * Versions/Inspector-iOS-10.3.json:
996         * Versions/Inspector-iOS-7.0.json:
997         * Versions/Inspector-iOS-8.0.json:
998         * Versions/Inspector-iOS-9.0.json:
999         * Versions/Inspector-iOS-9.3.json:
1000         Update legacy backend commands to remove the old/broken Network.setCacheDisabled command.
1001
1002 2017-03-28  Joseph Pecoraro  <pecoraro@apple.com>
1003
1004         Web Inspector: Inspecting a Main Resource that is JS/JSON does not format / syntax highlight it properly
1005         https://bugs.webkit.org/show_bug.cgi?id=166862
1006         <rdar://problem/29835977>
1007
1008         Reviewed by Brian Burg.
1009
1010         * UserInterface/Models/Resource.js:
1011         (WebInspector.Resource.prototype.get syntheticMIMEType):
1012         Don't override the mime type for Document resources. They should always
1013         have a mime type and we should use whatever it is.
1014
1015 2017-03-28  Joseph Pecoraro  <pecoraro@apple.com>
1016
1017         Web Inspector: Unable to Format JSON Request Data
1018         https://bugs.webkit.org/show_bug.cgi?id=170189
1019
1020         Reviewed by Matt Baker.
1021
1022         * UserInterface/Views/TextEditor.js:
1023         (WebInspector.TextEditor.prototype._startWorkerPrettyPrint):
1024         When we are viewing request data we are looking at a TextResourceContentView
1025         which has a TextEditor without a delegate. In these cases we can just assume
1026         a JavaScript Program. In the majority of cases this will typically be JSON
1027         data, and either Program or Module will highlight and format as expected.
1028
1029 2017-03-27  Devin Rousso  <webkit@devinrousso.com>
1030
1031         Web Inspector: Option-clicking the close tab button should close all other tabs
1032         https://bugs.webkit.org/show_bug.cgi?id=169046
1033
1034         Reviewed by Matt Baker.
1035
1036         * UserInterface/Views/TabBar.js:
1037         (WebInspector.TabBar.prototype._handleClick):
1038
1039 2017-03-27  Devin Rousso  <webkit@devinrousso.com>
1040
1041         Web Inspector: The inspector sidebar has weird sub-column sizing issues
1042         https://bugs.webkit.org/show_bug.cgi?id=161966
1043
1044         Reviewed by Joseph Pecoraro.
1045
1046         * UserInterface/Views/Sidebar.js:
1047         (WebInspector.Sidebar.prototype.resizerDragEnded):
1048         (WebInspector.Sidebar.prototype._recalculateWidth):
1049         Ensure that the selected sidebar panel is notified of the size change (sizeDidChange) when
1050         the resizer drag ends.
1051
1052         * UserInterface/Views/DetailsSectionDataGridRow.js:
1053         (WebInspector.DetailsSectionDataGridRow.prototype.sizeDidChange):
1054         * UserInterface/Views/ProbeSetDetailsSection.js:
1055         (WebInspector.ProbeSetDetailsSection.prototype.sizeDidChange):
1056         Add/update the sizeDidChange protected function.
1057
1058         * UserInterface/Views/ComputedStyleDetailsPanel.js:
1059         (WebInspector.ComputedStyleDetailsPanel.prototype.initialLayout):
1060         (WebInspector.ComputedStyleDetailsPanel.prototype.sizeDidChange):
1061         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
1062         (WebInspector.DOMNodeDetailsSidebarPanel.prototype.sizeDidChange):
1063         * UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
1064         (WebInspector.LayerTreeDetailsSidebarPanel.prototype.sizeDidChange):
1065         * UserInterface/Views/ResourceDetailsSidebarPanel.js:
1066         (WebInspector.ResourceDetailsSidebarPanel.prototype.sizeDidChange):
1067         * UserInterface/Views/ProbeDetailsSidebarPanel.js:
1068         (WebInspector.ProbeDetailsSidebarPanel.prototype.sizeDidChange):
1069         Update the contained DataGrid elements whenever the sidebar size changes so that the resizer
1070         elements are positioned correctly.
1071
1072         * UserInterface/Views/View.js:
1073         (WebInspector.View.prototype.updateLayoutIfNeeded):
1074         * UserInterface/Views/TimelineOverview.js:
1075         (WebInspector.TimelineOverview.prototype.updateLayoutIfNeeded):
1076         * UserInterface/Views/TimelineRuler.js:
1077         (WebInspector.TimelineRuler.prototype.updateLayoutIfNeeded):
1078         Ensure the layoutReason is also propagated.
1079
1080 2017-03-27  Joseph Pecoraro  <pecoraro@apple.com>
1081
1082         Web Inspector: Resource Details Sidebar displays previous image metrics when viewing resource where content load failed
1083         https://bugs.webkit.org/show_bug.cgi?id=170065
1084         <rdar://problem/27081591>
1085
1086         Reviewed by Matt Baker.
1087
1088         * UserInterface/Models/Resource.js:
1089         (WebInspector.Resource.prototype.getImageSize.imageDidLoad):
1090         (WebInspector.Resource.prototype.getImageSize.requestContentFailure):
1091         (WebInspector.Resource.prototype.getImageSize):
1092         If the requestContent failed, return a null image size.
1093
1094         * UserInterface/Views/ResourceDetailsSidebarPanel.js:
1095         (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshImageSizeSection.hideImageSection):
1096         (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshImageSizeSection):
1097         If the callback is called with a null size, hide the image size section.
1098
1099 2017-03-24  Brian Burg  <bburg@apple.com>
1100
1101         Web Inspector: RTL: number scripts are used inconsistently throughout the UI
1102         https://bugs.webkit.org/show_bug.cgi?id=168290
1103
1104         Reviewed by Joseph Pecoraro.
1105
1106         Original patch by Devin Rousso.
1107
1108         * Localizations/en.lproj/localizedStrings.js: Add new string for FPS bars.
1109         * UserInterface/Base/Utilities.js:
1110         (value.d):
1111         (value):
1112         Localize %d formatted values by default. If that's not desired, then you need to stringify
1113         the number outside of String.format and Number.abbreviate and pass it as %s instead.
1114         Also add a global variable for zwsp (zero-width space) and use it in DataGridNode.
1115
1116         * UserInterface/Views/ConsoleMessageView.js:
1117         (WebInspector.ConsoleMessageView.prototype._renderRepeatCount): Abbreviate the repeat count,
1118         and cause it to be localized.
1119
1120         * UserInterface/Views/DataGridNode.js:
1121         (WebInspector.DataGridNode.prototype.createCellContent):
1122         If we don't know anything about a cell's data other than that it's a number,
1123         run the number through toLocaleString().
1124
1125         * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
1126         Don't localize @%d tags for snapshot objects since this is not done elsewhere in the UI.
1127
1128         * UserInterface/Views/IndexedDatabaseDetailsSidebarPanel.js: Localize integer version number.
1129         (WebInspector.IndexedDatabaseDetailsSidebarPanel.prototype.layout):
1130
1131         * UserInterface/Views/MemoryTimelineView.js:
1132         (WebInspector.MemoryTimelineView.prototype._updateMaxComparisonLegend): Use Number.percentageString().
1133
1134         * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
1135         (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateDividers.createDividerAtPosition):
1136         (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateDividers):
1137         Localize "%d fps" markers.
1138
1139         * UserInterface/Views/TimelineOverview.js:
1140         (WebInspector.TimelineOverview.prototype._viewModeDidChange):
1141         Localize frame label numbers.
1142
1143 2017-03-24  Nikita Vasilyev  <nvasilyev@apple.com>
1144
1145         Web Inspector: Adding a WebSocket message may change the currently selected resource
1146         https://bugs.webkit.org/show_bug.cgi?id=170036
1147         <rdar://problem/31231463>
1148
1149         Reviewed by Joseph Pecoraro.
1150
1151         Calling increaseSize on a resource may cause a WebInspector.TimelineDataGrid#TimelineDataGrid#_refreshDirtyDataGridNodes call.
1152         Make sure _refreshDirtyDataGridNodes preserves selection of a treeElement.
1153
1154         * UserInterface/Views/TimelineDataGrid.js:
1155         (WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
1156         Re-attaching treeElement causes it to lose selection. Select it again after re-attaching.
1157
1158 2017-03-24  Devin Rousso  <webkit@devinrousso.com>
1159
1160         Web Inspector: add context menu item to log content of WebSocket frame
1161         https://bugs.webkit.org/show_bug.cgi?id=169945
1162
1163         Reviewed by Joseph Pecoraro.
1164
1165         * Localizations/en.lproj/localizedStrings.js:
1166
1167         * UserInterface/Views/WebSocketContentView.js:
1168         (WebInspector.WebSocketContentView):
1169         (WebInspector.WebSocketContentView.prototype.addFrame):
1170         (WebInspector.WebSocketContentView.prototype._addRow):
1171         Rework the way CSS classes are applied so the isOutgoing and isText flags can also be passed
1172         to the WebSocketDataGridNode.  This is necessary because a non-text frame shouldn't be able
1173         to be logged to the console.
1174
1175         * UserInterface/Views/WebSocketDataGridNode.js:
1176         (WebInspector.WebSocketDataGridNode.prototype.appendContextMenuItems):
1177
1178 2017-03-24  Devin Rousso  <webkit@devinrousso.com>
1179
1180         Web Inspector: allow users to click links in inline/user-agent styles
1181         https://bugs.webkit.org/show_bug.cgi?id=170054
1182
1183         Reviewed by Joseph Pecoraro.
1184
1185         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
1186         (WebInspector.CSSStyleDeclarationTextEditor.prototype.set style):
1187         (WebInspector.CSSStyleDeclarationTextEditor.prototype._updateJumpToSymbolTrackingMode):
1188         (WebInspector.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
1189         (WebInspector.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerNewHighlightCandidate):
1190         Always enable the token tracking controller, but only act on hovered/clicked token if it is
1191         a link or the owner style declaration has a source code location (for jumping to the Resource).
1192
1193 2017-03-24  Devin Rousso  <webkit@devinrousso.com>
1194
1195         Web Inspector: Indicate whether a WebSocket connection is open or close
1196         https://bugs.webkit.org/show_bug.cgi?id=168948
1197
1198         Reviewed by Joseph Pecoraro.
1199
1200         * Localizations/en.lproj/localizedStrings.js:
1201         * UserInterface/Main.html:
1202         Added WebSocketResourceTreeElement.js and SpanningDataGridNode.js.
1203
1204         * UserInterface/Views/WebSocketContentView.js:
1205         (WebInspector.WebSocketContentView):
1206         (WebInspector.WebSocketContentView.prototype.shown):
1207         (WebInspector.WebSocketContentView.prototype.hidden):
1208         (WebInspector.WebSocketContentView.prototype._updateState):
1209         Listen to changes in the readyState and add a SpanningDataGridNode when the current state
1210         becomes Closed.
1211
1212         * UserInterface/Views/WebSocketResourceTreeElement.js: Added.
1213         (WebInspector.WebSocketResourceTreeElement.prototype.onattach):
1214         (WebInspector.WebSocketResourceTreeElement.prototype.ondetach):
1215         (WebInspector.WebSocketResourceTreeElement.prototype._updateConnectionStatus):
1216         Listen to changes in the readyState and add/remove the status element depending on the
1217         current state:
1218          - Closed: show no status indicator
1219          - Connecting: show a small circle with a yellow color
1220          - Open: show a small circle with a green color
1221
1222         * UserInterface/Views/ResourceTreeElement.css:
1223         (.item.resource.resource-type-websocket .status > div):
1224         (.item.resource.resource-type-websocket:not(.selected) .status .open):
1225         (.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .open):
1226         (body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .open):
1227         (.item.resource.resource-type-websocket:not(.selected) .status .connecting):
1228         (.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .connecting):
1229         (body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .connecting):
1230
1231         * UserInterface/Views/FrameTreeElement.js:
1232         (WebInspector.FrameTreeElement):
1233         Use WebSocketResourceTreeElement as the constructor for WebSocket resources.
1234
1235         * UserInterface/Views/SpanningDataGridNode.js: Added.
1236         (WebInspector.SpanningDataGridNode.prototype.createCells):
1237         Creates a single cell that spans all the columns (via CSS colspan) of the parent DataGrid.
1238
1239         * UserInterface/Views/DataGrid.css:
1240         (.data-grid td.spanning):
1241         Center content of spanning nodes and prevent user interaction.
1242
1243         * UserInterface/Views/DataGridNode.js:
1244         (WebInspector.DataGridNode.prototype.createCell):
1245         Add additional checks so that a DataGridNode can be created with a column identifier that is
1246         not in the DataGrid.  This is used by SpanningGridDataNode, as it shouldn't match one single
1247         column in the DataGrid since it spans them all.
1248
1249         * UserInterface/Views/GeneralTreeElement.js:
1250         (WebInspector.GeneralTreeElement.prototype.ondetach):
1251         * UserInterface/Views/BreakpointTreeElement.js:
1252         (WebInspector.BreakpointTreeElement.prototype.ondetach):
1253         * UserInterface/Views/DOMBreakpointTreeElement.js:
1254         (WebInspector.DOMBreakpointTreeElement.prototype.ondetach):
1255         * UserInterface/Views/XHRBreakpointTreeElement.js:
1256         (WebInspector.XHRBreakpointTreeElement.prototype.ondetach):
1257         Add ondetach function (with super calls) for future use.
1258
1259 2017-03-23  Joseph Pecoraro  <pecoraro@apple.com>
1260
1261         Web Inspector: Cache type is not styled correctly in Timelines tab
1262         https://bugs.webkit.org/show_bug.cgi?id=170032
1263
1264         Reviewed by Matt Baker.
1265
1266         * UserInterface/Views/NetworkGridContentView.css:
1267         (.content-view:matches(.network, .network-grid) > .data-grid .cache-type):
1268         (.content-view:matches(.network, .network-grid) > .data-grid:matches(:focus, .force-focus) tr.selected .cache-type):
1269         (.content-view.network-grid > .data-grid .cache-type): Deleted.
1270         (.content-view.network-grid > .data-grid:matches(:focus, .force-focus) tr.selected .cache-type): Deleted.
1271         The different network grids have different class names. Handle both.
1272
1273 2017-03-23  Nikita Vasilyev  <nvasilyev@apple.com>
1274
1275         Web Inspector: Editing local storage keys/values starts with truncated strings
1276         https://bugs.webkit.org/show_bug.cgi?id=169896
1277
1278         Reviewed by Brian Burg.
1279
1280         * UserInterface/Views/DataGrid.css:
1281         (.data-grid td.editing > div):
1282         * UserInterface/Views/DataGrid.js:
1283         (WebInspector.DataGrid.prototype._editingCancelled):
1284         div.cell-content is removed because the <td> itself is contenteditable (using -webkit-user-modify:read-write-plaintext-only),
1285         not the inner div.cell-content. Re-create div.cell-content after commiting (by pressing Enter) or canceling (by pressing Esc)
1286         since it may get removed while editing.
1287
1288 2017-03-22  Matt Baker  <mattbaker@apple.com>
1289
1290         Web Inspector: Clicking DOM breakpoint marker should enable/disable breakpoints
1291         https://bugs.webkit.org/show_bug.cgi?id=169856
1292         <rdar://problem/31133090>
1293
1294         Reviewed by Joseph Pecoraro.
1295
1296         Clicking DOM breakpoint marker should enable/disable breakpoints,
1297         matching the behavior of the marker's context menu:
1298
1299         - If one or more breakpoints are disabled, click enables all
1300         - If all breakpoints are enabled, click disables all
1301
1302         * UserInterface/Views/DOMTreeElement.js:
1303         (WebInspector.DOMTreeElement.prototype._updateBreakpointStatus):
1304         (WebInspector.DOMTreeElement.prototype._statusImageClicked):
1305
1306 2017-03-20  Devin Rousso  <webkit@devinrousso.com>
1307
1308         Web Inspector: RTL: minor layout issues in Breakpoint Editor popover
1309         https://bugs.webkit.org/show_bug.cgi?id=169765
1310
1311         Reviewed by Brian Burg.
1312
1313         * UserInterface/Controllers/BreakpointPopoverController.js:
1314         (WebInspector.BreakpointPopoverController.prototype._createPopoverContent):
1315         Fix typo.
1316
1317         * UserInterface/Views/BreakpointActionView.css:
1318         (body[dir=ltr] .breakpoint-action-button-container):
1319         (body[dir=rtl] .breakpoint-action-button-container):
1320         (:matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)):
1321         (body[dir=ltr] :matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)):
1322         (body[dir=rtl] :matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)):
1323         (.breakpoint-action-block-body > .description):
1324         (body[dir=ltr] .breakpoint-action-block-body > .description):
1325         (body[dir=rtl] .breakpoint-action-block-body > .description):
1326         (.breakpoint-action-block-body > input):
1327         (.breakpoint-action-button-container): Deleted.
1328         (.breakpoint-action-append-button, .breakpoint-action-remove-button): Deleted.
1329
1330         * UserInterface/Views/BreakpointActionView.js:
1331         (WebInspector.BreakpointActionView.prototype._updateBody):
1332         Manually apply `dir="ltr"` to the description element to force proper rendering.
1333
1334         * UserInterface/Views/BreakpointPopoverController.css:
1335         (.popover .edit-breakpoint-popover-content):
1336         (.popover .edit-breakpoint-popover-content > table > tr > th):
1337         (#edit-breakpoint-popover-ignore):
1338         (body[dir=ltr] :matches(#edit-breakpoint-popover-ignore, #edit-breakpoint-popover-auto-continue)):
1339         (body[dir=rtl] :matches(#edit-breakpoint-popover-ignore, #edit-breakpoint-popover-auto-continue)):
1340         (#edit-breakpoint-popoover-auto-continue): Deleted.
1341
1342 2017-03-20  Nikita Vasilyev  <nvasilyev@apple.com>
1343
1344         Web Inspector: Icon next to "An error occurred..." message changes size when Inspector window is resized
1345         https://bugs.webkit.org/show_bug.cgi?id=169901
1346
1347         Reviewed by Brian Burg.
1348
1349         * UserInterface/Views/Main.css:
1350         (.message-text-view.error::before):
1351
1352 2017-03-20  Nikita Vasilyev  <nvasilyev@apple.com>
1353
1354         Web Inspector: Clicking on Clear Network Items icon throws an exception if timing popover is visible
1355         https://bugs.webkit.org/show_bug.cgi?id=169852
1356         <rdar://problem/31132652>
1357
1358         Reviewed by Joseph Pecoraro.
1359
1360         * UserInterface/Views/ResourceTimelineDataGridNode.js:
1361         (WebInspector.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar):
1362         (WebInspector.ResourceTimelineDataGridNode):
1363
1364 2017-03-20  Nikita Vasilyev  <nvasilyev@apple.com>
1365
1366         REGRESSION (r187873): Web Inspector: When resizing, prevent DataGrid columns from collapsing entirely
1367         https://bugs.webkit.org/show_bug.cgi?id=169899
1368
1369         Reviewed by Joseph Pecoraro.
1370
1371         * UserInterface/Views/DataGrid.js:
1372         (WebInspector.DataGrid.prototype.resizerDragging):
1373         leftMinimum and rightMaximum variables were always NaN because this.ColumnResizePadding is undefined.
1374
1375 2017-03-20  Matt Baker  <mattbaker@apple.com>
1376
1377         Web Inspector: Pseudo-class markers overlap DOM breakpoints and disclosure triangle
1378         https://bugs.webkit.org/show_bug.cgi?id=169850
1379         <rdar://problem/31132335>
1380
1381         Reviewed by Joseph Pecoraro.
1382
1383         DOMTreeContentView should always have at least 7px of gutter space to
1384         accomodate pseudo-class markers. When DOM breakpoints are visible the
1385         gutter size is increased so breakpoints and markers do not overlap.
1386
1387         * UserInterface/Views/DOMTreeContentView.css:
1388         (.content-view.dom-tree .tree-outline.dom):
1389         (.content-view.dom-tree.show-gutter .tree-outline.dom):
1390         (body[dir=ltr] .content-view.dom-tree .tree-outline.dom):
1391         (body[dir=rtl] .content-view.dom-tree .tree-outline.dom):
1392         (body[dir=ltr] .content-view.dom-tree.show-gutter .tree-outline.dom): Deleted.
1393         (body[dir=rtl] .content-view.dom-tree.show-gutter .tree-outline.dom): Deleted.
1394
1395         * UserInterface/Views/DOMTreeOutline.css:
1396         (.content-view.dom-tree.show-gutter .tree-outline.dom):
1397         Change pseudo-class marker indent when showing DOM breakpoint gutter.
1398         (body[dir=ltr] .tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
1399         Drive-by fix: copy paste error.
1400
1401 2017-03-19  Matt Baker  <mattbaker@apple.com>
1402
1403         Web Inspector: REGRESSION (r212910): Active call frame status icon has incorrect left margin
1404         https://bugs.webkit.org/show_bug.cgi?id=169862
1405
1406         Reviewed by Brian Burg.
1407
1408         * UserInterface/Views/CallFrameTreeElement.css:
1409         (.tree-outline .item.call-frame .status):
1410         (body[dir=ltr] .tree-outline .item.call-frame .status):
1411         (body[dir=rtl] .tree-outline .item.call-frame .status):
1412
1413 2017-03-18  Devin Rousso  <webkit@devinrousso.com>
1414
1415         Web Inspector: Empty attribute added to a DOM tree outline element should not add whitespace within the tag
1416         https://bugs.webkit.org/show_bug.cgi?id=139623
1417
1418         Reviewed by Brian Burg.
1419
1420         * UserInterface/Views/DOMTreeElement.js:
1421         (WebInspector.DOMTreeElement.prototype._attributeEditingCommitted):
1422         If the `newText` after editing has no content, remove the element for that attribute.
1423
1424 2017-03-18  Devin Rousso  <webkit@devinrousso.com>
1425
1426         Web Inspector: add keyboard shortcut to clear timeline records
1427         https://bugs.webkit.org/show_bug.cgi?id=132485
1428
1429         Reviewed by Brian Burg.
1430
1431         * Localizations/en.lproj/localizedStrings.js:
1432         * UserInterface/Views/TimelineRecordingContentView.js:
1433         (WebInspector.TimelineRecordingContentView):
1434         (WebInspector.TimelineRecordingContentView.prototype.handleClearShortcut):
1435
1436 2017-03-17  Devin Rousso  <webkit@devinrousso.com>
1437
1438         Web Inspector: wrong filename when saving resource from ResourceImageContentView
1439         https://bugs.webkit.org/show_bug.cgi?id=54454
1440
1441         Reviewed by Joseph Pecoraro.
1442
1443         * UserInterface/Views/ResourceContentView.js:
1444         (WebInspector.ResourceContentView.prototype.get supportsSave):
1445         (WebInspector.ResourceContentView.prototype.get saveData):
1446         * UserInterface/Views/TextResourceContentView.js:
1447         (WebInspector.TextResourceContentView.prototype.get supportsSave): Deleted.
1448         Add save data getter to the parent class, so that both Images and Fonts can be saved.
1449
1450         * UserInterface/Views/Resource.js:
1451         (WebInspector.Resource.prototype.canRequestContent):
1452         Drive-by: remove unused function.
1453
1454 2017-03-16  Devin Rousso  <webkit@devinrousso.com>
1455
1456         Web Inspector: memory category timelines would look better with ruler tick-aligned guides
1457         https://bugs.webkit.org/show_bug.cgi?id=158100
1458
1459         Reviewed by Joseph Pecoraro.
1460
1461         * UserInterface/Views/MemoryTimelineView.css:
1462         (.timeline-view.memory > .content > .details):
1463         (.timeline-view.memory > .content > .details > .timeline-ruler):
1464         (body[dir=ltr] .timeline-view.memory > .content > .details > .timeline-ruler):
1465         (body[dir=rtl] .timeline-view.memory > .content > .details > .timeline-ruler):
1466         Make the TimelineRuler absolutely positioned so it can use the full height of the view,
1467         providing enough space for the markers to be visible.
1468
1469 2017-03-16  Devin Rousso  <webkit@devinrousso.com>
1470
1471         Web Inspector: Console Evaluation links in the Console should not show normally
1472         https://bugs.webkit.org/show_bug.cgi?id=157483
1473
1474         Reviewed by Matt Baker.
1475
1476         * UserInterface/Models/CallFrame.js:
1477         (WebInspector.CallFrame):
1478         (WebInspector.CallFrame.prototype.get isConsoleEvaluation):
1479         (WebInspector.CallFrame.fromDebuggerPayload):
1480         (WebInspector.CallFrame.fromPayload):
1481         Move console evaluation check to the constructor for consistency.
1482
1483         * UserInterface/Views/ConsoleMessageView.js:
1484         (WebInspector.ConsoleMessageView.prototype._appendLocationLink):
1485         * UserInterface/Views/StackTraceView.js:
1486         (WebInspector.StackTraceView):
1487         Only add CallFrameView elements if the corresponding CallFame is not a console evaluation.
1488
1489 2017-03-16  Matt Baker  <mattbaker@apple.com>
1490
1491         Web Inspector: REGRESSION (r213691): Saving DOM breakpoints broken after refactoring
1492         https://bugs.webkit.org/show_bug.cgi?id=169779
1493
1494         Reviewed by Joseph Pecoraro.
1495
1496         Use correct method: _saveBreakpoints -> _saveDOMBreakpoints.
1497
1498         * UserInterface/Controllers/DOMDebuggerManager.js:
1499         (WebInspector.DOMDebuggerManager.prototype.addDOMBreakpoint):
1500         Remove check before saving to be consistent with similar code in
1501         DebuggerManager and DOMDebuggerManager.
1502
1503 2017-03-16  Devin Rousso  <webkit@devinrousso.com>
1504
1505         Web Inspector: add "Save Selected" context menu item to Console
1506         https://bugs.webkit.org/show_bug.cgi?id=151837
1507
1508         Reviewed by Joseph Pecoraro.
1509
1510         * Localizations/en.lproj/localizedStrings.js:
1511         * UserInterface/Base/Main.js:
1512         (WebInspector.saveDataToFile):
1513         Allow data to be saved without a provided URL.  It will default to localized "Untitled".
1514
1515         * UserInterface/Views/LogContentView.js:
1516         (WebInspector.LogContentView.prototype._handleContextMenuEvent):
1517
1518 2017-03-16  Devin Rousso  <webkit@devinrousso.com>
1519
1520         Web Inspector: RTL: selected frame indicator is not positioned correctly
1521         https://bugs.webkit.org/show_bug.cgi?id=169763
1522
1523         Reviewed by Matt Baker.
1524
1525         * UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
1526         (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateFrameMarker):
1527         (WebInspector.RenderingFrameTimelineOverviewGraph.prototype._mouseClicked):
1528         Treat the current mouse position (event.pageX) as a negative value when in RTL, meaning that
1529         the delta movement from the starting position is flipped.
1530
1531         * UserInterface/Views/TimelineRuler.css:
1532         (body[dir=ltr] .timeline-ruler > .header > .divider,):
1533         (body[dir=rtl] .timeline-ruler > .header > .divider,):
1534         (.timeline-ruler > .header > .divider):
1535         (.timeline-ruler > .header > .divider > .label):
1536         (body[dir=ltr] .timeline-ruler > .header > .divider > .label):
1537         (body[dir=rtl] .timeline-ruler > .header > .divider > .label):
1538         (.timeline-ruler > .markers > .divider):
1539         (.timeline-ruler > .markers > .marker):
1540         (body[dir=ltr] .timeline-ruler > .markers > .marker):
1541         (body[dir=rtl] .timeline-ruler > .markers > .marker):
1542         (.timeline-ruler > .markers > .marker::before):
1543         (body[dir=ltr] .timeline-ruler > .markers > .marker::before):
1544         (body[dir=rtl] .timeline-ruler > .markers > .marker::before):
1545         (body[dir=ltr] .timeline-ruler > .markers > .marker.current-time):
1546         (body[dir=rtl] .timeline-ruler > .markers > .marker.current-time):
1547         (.timeline-ruler > .markers > .marker.current-time::before):
1548         (.timeline-ruler > .markers > .marker.current-time): Deleted.
1549
1550         (.timeline-ruler > .selection-handle):
1551         (body[dir=ltr] .timeline-ruler > .selection-handle.left):
1552         (body[dir=rtl] .timeline-ruler > .selection-handle.left):
1553         (body[dir=ltr] .timeline-ruler > .selection-handle.right):
1554         (body[dir=rtl] .timeline-ruler > .selection-handle.right):
1555         Drive-by: add CSS variable for clarity.
1556
1557 2017-03-16  Devin Rousso  <webkit@devinrousso.com>
1558
1559         Web Inspector: RTL: filter mode icon in Debugger sidebar is misaligned
1560         https://bugs.webkit.org/show_bug.cgi?id=169766
1561
1562         Reviewed by Matt Baker.
1563
1564         * UserInterface/Views/FilterBar.css:
1565         (.filter-bar > .navigation-bar > .item):
1566         (body[dir=ltr] .filter-bar > .navigation-bar > .item):
1567         (body[dir=rtl] .filter-bar > .navigation-bar > .item):
1568
1569 2017-03-16  Matt Baker  <mattbaker@apple.com>
1570
1571         Web Inspector: Refactoring: remove DebuggerTreeElement class
1572         https://bugs.webkit.org/show_bug.cgi?id=169697
1573
1574         Reviewed by Devin Rousso.
1575
1576         Remove unnecessary class DebuggerTreeElement from TreeElement class hierarchy.
1577         The `sourceCodeLocation` property on IssueMessage and Breakpoint (the debugger
1578         objects) can be tested for generically using TreeElement.prototype.representedObject.
1579
1580         * UserInterface/Main.html:
1581         Remove file.
1582
1583         * UserInterface/Views/BreakpointTreeElement.js:
1584         * UserInterface/Views/IssueTreeElement.js:
1585         Change base class to GeneralTreeElement.
1586
1587         * UserInterface/Views/DebuggerSidebarPanel.js:
1588         (WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint):
1589         (WebInspector.DebuggerSidebarPanel.prototype._compareTreeElements):
1590         (WebInspector.DebuggerSidebarPanel.prototype._addIssue):
1591         (WebInspector.DebuggerSidebarPanel.prototype._compareDebuggerTreeElements): Deleted.
1592         Renamed to just "_compareTreeElements".
1593
1594         * UserInterface/Views/DebuggerTreeElement.js: Removed.
1595
1596 2017-03-16  Devin Rousso  <webkit@devinrousso.com>
1597
1598         Web Inspector: RTL: goto arrow for source locations is pointing wrong way in Timeline data grids
1599         https://bugs.webkit.org/show_bug.cgi?id=169764
1600
1601         Reviewed by Matt Baker.
1602
1603         * UserInterface/Views/DataGrid.css:
1604         (body[dir=rtl] .data-grid td .go-to-arrow):
1605
1606 2017-03-16  Brian Burg  <bburg@apple.com>
1607
1608         Web Inspector: RTL: add FindBanner support for RTL layout
1609         https://bugs.webkit.org/show_bug.cgi?id=168723
1610
1611         Reviewed by Timothy Hatcher.
1612
1613         Due to the large number of CSS tricks used by this widget, adding RTL
1614         support involves changing a large number of rules. The important parts:
1615
1616         - Use '.segmented.{previous,next}-result' instead of '.segmented.
1617         {left,right}', this makes the style rules way less confusing for RTL.
1618
1619         - Flip icons so icons look like "< >" but actions are reversed.
1620
1621         - Get rid of the weird expanding button divider. This is impossible
1622         to mirror with the existing adjacent sibling combinator, and it does
1623         not match the system appearance. Just replace the mini-divider with a
1624         full divider and remove related dynamic rules that trigger on :active.
1625
1626         - Always keep the button divider between next/previous on the rightmost
1627         button, to avoid subtle differences between LTR and RTL.
1628
1629         - Fix some mistakes where we weren't using --border-color and also
1630         didn't adjust the handcoded border color for the inactive window case.
1631
1632         * UserInterface/Views/FindBanner.css:
1633         (.find-banner):
1634         (body[dir=ltr] .find-banner > :first-child,):
1635         (body[dir=ltr] .find-banner > :last-child,):
1636         (.find-banner > input[type="search"]):
1637         (body[dir=ltr] .find-banner > input[type="search"]):
1638         (body[dir=rtl] .find-banner > input[type="search"]):
1639         (.find-banner > button:active:not(:disabled)):
1640         (.find-banner > button.segmented):
1641         (.find-banner > button.segmented.previous-result):
1642         (body[dir=ltr] .find-banner > button.segmented.previous-result):
1643         (body[dir=rtl] .find-banner > button.segmented.previous-result):
1644         (body[dir=ltr] .find-banner > button.segmented.previous-result > .glyph):
1645         (body[dir=rtl] .find-banner > button.segmented.previous-result > .glyph):
1646         (body[dir=ltr] .find-banner > button.segmented.previous-result:active:not(:disabled) > .glyph):
1647         (body[dir=rtl] .find-banner > button.segmented.previous-result:active:not(:disabled) > .glyph):
1648         (.find-banner > button.segmented.next-result):
1649         (body[dir=ltr] .find-banner > button.segmented.next-result):
1650         (body[dir=rtl] .find-banner > button.segmented.next-result):
1651         (body[dir=ltr] .find-banner > button.segmented.next-result > .glyph):
1652         (body[dir=rtl] .find-banner > button.segmented.next-result > .glyph):
1653         (body[dir=ltr] .find-banner > button.segmented.next-result:active:not(:disabled) > .glyph):
1654         (body[dir=rtl] .find-banner > button.segmented.next-result:active:not(:disabled) > .glyph):
1655         (.find-banner.console-find-banner > input[type="search"]):
1656         (body[dir=ltr] .find-banner.console-find-banner > input[type="search"]):
1657         (body[dir=rtl] .find-banner.console-find-banner > input[type="search"]):
1658         (body[dir=ltr] .find-banner.console-find-banner > input[type="search"]::-webkit-textfield-decoration-container):
1659         (body[dir=rtl] .find-banner.console-find-banner > input[type="search"]::-webkit-textfield-decoration-container):
1660         (.find-banner > :first-child): Deleted.
1661         (.find-banner > :last-child): Deleted.
1662         (.find-banner > button.segmented.left): Deleted.
1663         (.find-banner > button:not(:active).segmented.right:before): Deleted.
1664         (.find-banner > button.segmented.left:active + button.segmented.right,): Deleted.
1665         (.find-banner > button.segmented.left:active + button.segmented.right:before): Deleted.
1666         (.find-banner > button.segmented.left > .glyph): Deleted.
1667         (.find-banner > button.segmented.left:active:not(:disabled) > .glyph): Deleted.
1668         (.find-banner > button.segmented.right): Deleted.
1669         (.find-banner > button.segmented.right > .glyph): Deleted.
1670         (.find-banner > button.segmented.right:active:not(:disabled) > .glyph): Deleted.
1671         (.find-banner.console-find-banner > input[type="search"]::-webkit-textfield-decoration-container): Deleted.
1672
1673         * UserInterface/Views/FindBanner.js:
1674         (WebInspector.FindBanner):
1675         Change left and right to logical names for the buttons, and inline
1676         some style classes with single uses.
1677
1678 2017-03-15  Devin Rousso  <webkit@devinrousso.com>
1679
1680         Web Inspector: Selecting text in the console does not do what I expect
1681         https://bugs.webkit.org/show_bug.cgi?id=169570
1682
1683         Reviewed by Matt Baker.
1684
1685         * UserInterface/Views/ConsoleMessageView.css:
1686         (.console-message-text > span > :matches(.console-message-enclosed, .console-message-preview, .console-message-preview-divider)):
1687         (.console-message .console-message-location):
1688         (.console-message-location.call-frame):
1689         Prevent text selection on anything other than the message text.  The other information that
1690         is not selectable can still be copied by selecting the message itself and copying.
1691
1692 2017-03-15  Nikita Vasilyev  <nvasilyev@apple.com>
1693
1694         Web Inspector: WebSockets: Update Arrow Up icon to fit in with the rest of our iconography
1695         https://bugs.webkit.org/show_bug.cgi?id=169696
1696         <rdar://problem/31073748>
1697
1698         Reviewed by Matt Baker.
1699
1700         * UserInterface/Images/ArrowUp.svg:
1701         * UserInterface/Images/gtk/ArrowUp.svg:
1702
1703 2017-03-15  Devin Rousso  <webkit@devinrousso.com>
1704
1705         Web Inspector: Add icons for SVG Image cluster path components
1706         https://bugs.webkit.org/show_bug.cgi?id=169687
1707
1708         Reviewed by Joseph Pecoraro.
1709
1710         * UserInterface/Images/Image.svg: Added.
1711         * UserInterface/Images/Source.svg: Added.
1712         * UserInterface/Images/gtk/Image.svg: Added.
1713         * UserInterface/Images/gtk/Source.svg: Added.
1714
1715         * UserInterface/Views/PathComponentIcons.css:
1716         (.image-icon .icon):
1717         (.source-icon .icon):
1718
1719         * UserInterface/Views/SVGImageResourceClusterContentView.js:
1720         (WebInspector.SVGImageResourceClusterContentView):
1721
1722 2017-03-15  Devin Rousso  <webkit@devinrousso.com>
1723
1724         Web Inspector: RTL: flip Memory timelines
1725         https://bugs.webkit.org/show_bug.cgi?id=169694
1726
1727         Reviewed by Brian Burg.
1728
1729         * UserInterface/Views/MemoryCategoryView.css:
1730         (body[dir=rtl] .memory-category-view > .graph):
1731
1732 2017-03-15  Joseph Pecoraro  <pecoraro@apple.com>
1733
1734         JSContext Inspector: NetworkAgent may be unavailable
1735         https://bugs.webkit.org/show_bug.cgi?id=169691
1736
1737         Reviewed by Brian Burg.
1738
1739         * UserInterface/Views/ResourceDetailsSidebarPanel.js:
1740         (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
1741         Check that NetworkAgent even exists. An augmented JSContext may have Resources
1742         without having a NetworkAgent.
1743
1744 2017-03-15  Nikita Vasilyev  <nvasilyev@apple.com>
1745
1746         REGRESSION (r213622): Web Inspector: DataGrid headers should NOT be centered
1747         https://bugs.webkit.org/show_bug.cgi?id=169645
1748         <rdar://problem/31051520>
1749
1750         Reviewed by Matt Baker.
1751
1752         * UserInterface/Views/DataGrid.css:
1753         (.data-grid th):
1754         (body[dir=ltr] .data-grid th):
1755         (body[dir=rtl] .data-grid th):
1756
1757 2017-03-15  Devin Rousso  <webkit@devinrousso.com>
1758
1759         Web Inspector: SVG image content view should toggle between image and source
1760         https://bugs.webkit.org/show_bug.cgi?id=16079
1761
1762         Reviewed by Joseph Pecoraro.
1763
1764         * Localizations/en.lproj/localizedStrings.js:
1765         * UserInterface/Main.html:
1766
1767         * UserInterface/Views/ResourceClusterContentView.js:
1768         (WebInspector.ResourceClusterContentView.prototype.get responseContentView):
1769         Show the SVG cluster content view if the MIME type matches an SVG file.
1770
1771         * UserInterface/Views/SVGImageResourceClusterContentView.js: Added.
1772         (WebInspector.SVGImageResourceClusterContentView):
1773         (WebInspector.SVGImageResourceClusterContentView.prototype.get resource):
1774         (WebInspector.SVGImageResourceClusterContentView.prototype.get selectionPathComponents):
1775         (WebInspector.SVGImageResourceClusterContentView.prototype.shown):
1776         (WebInspector.SVGImageResourceClusterContentView.prototype.closed):
1777         (WebInspector.SVGImageResourceClusterContentView.prototype.saveToCookie):
1778         (WebInspector.SVGImageResourceClusterContentView.prototype.restoreFromCookie):
1779         (WebInspector.SVGImageResourceClusterContentView.prototype._pathComponentForContentView):
1780         (WebInspector.SVGImageResourceClusterContentView.prototype._identifierForContentView):
1781         (WebInspector.SVGImageResourceClusterContentView.prototype._showContentViewForIdentifier):
1782         (WebInspector.SVGImageResourceClusterContentView.prototype._pathComponentSelected):
1783
1784 2017-03-15  Devin Rousso  <webkit@devinrousso.com>
1785
1786         Web Inspector: RTL: add support for Timeline ruler selections/movement
1787         https://bugs.webkit.org/show_bug.cgi?id=169588
1788
1789         Reviewed by Matt Baker.
1790
1791         * UserInterface/Views/TimelineOverview.css:
1792         (body[dir=ltr] .timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .selection-handle.right):
1793         (body[dir=rtl] .timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .selection-handle.left):
1794         (body[dir=ltr] .timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .shaded-area.right):
1795         (body[dir=rtl] .timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .shaded-area.left):
1796         (.timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .selection-handle.right): Deleted.
1797         (.timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .shaded-area.right): Deleted.
1798         Fixes alignment of selection handles when in Frames view.
1799
1800         * UserInterface/Views/TimelineOverview.js:
1801         (WebInspector.TimelineOverview.prototype._handleScrollEvent):
1802         Support horizontal scrolling in timelines by treating the current scroll value as negative
1803         when in RTL, flipping the scroll direction.
1804
1805         * UserInterface/Views/TimelineRuler.css:
1806         (body[dir=ltr] .timeline-ruler > .selection-handle.left):
1807         (body[dir=rtl] .timeline-ruler > .selection-handle.left):
1808         (body[dir=ltr] .timeline-ruler > .selection-handle.right):
1809         (body[dir=rtl] .timeline-ruler > .selection-handle.right):
1810         (body[dir=ltr] .timeline-ruler > .shaded-area.left):
1811         (body[dir=rtl] .timeline-ruler > .shaded-area.left):
1812         (body[dir=ltr] .timeline-ruler > .shaded-area.right):
1813         (body[dir=rtl] .timeline-ruler > .shaded-area.right):
1814         (.timeline-ruler > .selection-handle.left): Deleted.
1815         (.timeline-ruler > .selection-handle.right): Deleted.
1816         (.timeline-ruler > .shaded-area.left): Deleted.
1817         (.timeline-ruler > .shaded-area.right): Deleted.
1818         Flip the position alignment of the selection handles and shaded areas when in RTL.
1819
1820         * UserInterface/Views/TimelineRuler.js:
1821         (WebInspector.TimelineRuler.prototype._handleMouseDown):
1822         (WebInspector.TimelineRuler.prototype._handleMouseMove):
1823         (WebInspector.TimelineRuler.prototype._handleMouseUp):
1824         (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseDown):
1825         (WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseMove):
1826         Treat the current mouse position (event.pageX) as a negative value when in RTL, meaning that
1827         the delta movement from the starting position is flipped.
1828
1829 2017-03-15  Joseph Pecoraro  <pecoraro@apple.com>
1830
1831         Web Inspector: REGRESSION: Elements Tab > Node Details Sidebar > Properties Section is spammed with TypeErrors
1832         https://bugs.webkit.org/show_bug.cgi?id=153911
1833         <rdar://problem/24520098>
1834
1835         Reviewed by Devin Rousso.
1836
1837         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
1838         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved.inspectedPage_node_collectPrototypes):
1839         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved):
1840         Update due to naming conventions for code that evalutes in the inspected page.
1841
1842         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.fillSection):
1843         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties):
1844         Create a more complete ObjectTreeView for the different sections.
1845
1846         * UserInterface/Views/ObjectTreePropertyTreeElement.js:
1847         (WebInspector.ObjectTreePropertyTreeElement.prototype._updateChildren):
1848         PureAPI behaves the same as ClassAPI and just shows own properties.
1849
1850         * UserInterface/Views/ObjectTreeView.js:
1851         (WebInspector.ObjectTreeView.prototype.showOnlyProperties):
1852         In only properties mode don't show the Prototype expander at the end.
1853
1854         (WebInspector.ObjectTreeView.prototype.setPrototypeNameOverride):
1855         Allow a prototype name override at the top level. This will allow clients
1856         to specify that the object at the top level is a Prototype object, so that
1857         ObjectTreePropertyTreeElements can infer the right NativeFunctionParameter
1858         information knowing that those properties are on a particular prototype.
1859
1860         (WebInspector.ObjectTreeView.prototype.update):
1861         For the PureAPI use getOwnProperties instead of getDisplayableProperties.
1862         This avoids the special handling we have for DOM native properties which
1863         we bubble up to the top as value descriptors even though they are actually
1864         accessor descriptors on prototypes.
1865
1866         (WebInspector.ObjectTreeView.prototype._updateProperties):
1867         Pass the prototype name override onward for object properties.
1868
1869 2017-03-14  Joseph Pecoraro  <pecoraro@apple.com>
1870
1871         Web Inspector: Exception when fetching computed styles can break future updates of section
1872         https://bugs.webkit.org/show_bug.cgi?id=169638
1873         <rdar://problem/30588688>
1874
1875         Reviewed by Devin Rousso.
1876
1877         * UserInterface/Models/DOMNodeStyles.js:
1878         (WebInspector.DOMNodeStyles.prototype.refresh.wrap):
1879         (WebInspector.DOMNodeStyles.prototype.refresh):
1880         Gracefully handle exceptions. If an exception did happen we
1881         would be unable to update these in the future.
1882
1883 2017-03-14  Devin Rousso  <webkit@devinrousso.com>
1884
1885         Web Inspector: RTL: add support for Memory timeline
1886         https://bugs.webkit.org/show_bug.cgi?id=169584
1887
1888         Reviewed by Brian Burg.
1889
1890         * UserInterface/Views/MemoryCategoryView.css:
1891         (.memory-category-view > .details):
1892         (body[dir=ltr] .memory-category-view > .details):
1893         (body[dir=rtl] .memory-category-view > .details):
1894
1895         * UserInterface/Views/MemoryTimelineOverviewGraph.css:
1896         (.timeline-overview-graph.memory > .legend):
1897         (body[dir=ltr] .timeline-overview-graph.memory > .legend):
1898         (body[dir=rtl] .timeline-overview-graph.memory > .legend):
1899         (.timeline-overview-graph.memory .memory-pressure-event):
1900         (body[dir=ltr] .timeline-overview-graph.memory .memory-pressure-event):
1901         (body[dir=rtl] .timeline-overview-graph.memory .memory-pressure-event):
1902
1903         * UserInterface/Views/MemoryTimelineOverviewGraph.js:
1904         (WebInspector.MemoryTimelineOverviewGraph.prototype.layout):
1905         Rework the calculation for the marker offset to use "right" in RTL.
1906
1907         * UserInterface/Views/MemoryTimelineView.css:
1908         (.timeline-view.memory > .content > .details > .timeline-ruler):
1909         (body[dir=ltr] .timeline-view.memory > .content > .details > .timeline-ruler):
1910         (body[dir=rtl] .timeline-view.memory > .content > .details > .timeline-ruler):
1911         (.timeline-view.memory > .content > .overview > .divider):
1912         (body[dir=ltr] .timeline-view.memory > .content > .overview > .divider):
1913         (body[dir=rtl] .timeline-view.memory > .content > .overview > .divider):
1914         (.timeline-view.memory .legend):
1915         (body[dir=ltr] .timeline-view.memory .legend):
1916         (body[dir=rtl] .timeline-view.memory .legend):
1917         (.timeline-view.memory .legend > .row):
1918         (.timeline-view.memory .legend > .row > .swatch):
1919         (body[dir=ltr] .timeline-view.memory .legend > .row > .swatch):
1920         (body[dir=rtl] .timeline-view.memory .legend > .row > .swatch):
1921         (body[dir=ltr] .timeline-view.memory .legend > .row > :matches(.label, .size)):
1922         (body[dir=rtl] .timeline-view.memory .legend > .row > :matches(.label, .size)):
1923         (.timeline-view.memory .legend > .row > .label):
1924         (.timeline-view.memory .legend > .row > .size):
1925
1926 2017-03-14  Devin Rousso  <webkit@devinrousso.com>
1927
1928         Web Inspector: RTL: add support for Timeline graphs
1929         https://bugs.webkit.org/show_bug.cgi?id=169585
1930
1931         Reviewed by Brian Burg.
1932
1933         * UserInterface/Views/HeapAllocationsTimelineOverviewGraph.js:
1934         (WebInspector.HeapAllocationsTimelineOverviewGraph.prototype.layout):
1935         Rework the calculation for the icon offset to use "right" in RTL.
1936
1937         * UserInterface/Views/MemoryTimelineOverviewGraph.css:
1938         (body[dir=rtl] .timeline-overview-graph.memory > .stacked-line-chart):
1939         Flip the chart when in RTL.
1940
1941         * UserInterface/Views/TimelineRecordBar.css:
1942         (.timeline-record-bar):
1943         (body[dir=ltr] .timeline-record-bar > .segment.inactive):
1944         (body[dir=rtl] .timeline-record-bar > .segment.inactive):
1945         (body[dir=ltr] .timeline-record-bar.unfinished > .segment):
1946         (body[dir=rtl] .timeline-record-bar.unfinished > .segment):
1947         (body[dir=ltr] .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
1948         (body[dir=rtl] .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
1949         (body[dir=ltr] :matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
1950         (body[dir=rtl] :matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
1951         (.timeline-record-bar > .segment.inactive,): Deleted.
1952         (.timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
1953         (:matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
1954
1955         * UserInterface/Views/TimelineRecordBar.js:
1956         (WebInspector.TimelineRecordBar.prototype.refresh):
1957         Apply the position updates to "right" in RTL.
1958
1959         * UserInterface/Views/TimelineRecordFrame.js:
1960         (WebInspector.TimelineRecordFrame.prototype.refresh):
1961         Apply the position updates to "right" in RTL.
1962
1963         * UserInterface/Views/TimelineRuler.js:
1964         (WebInspector.TimelineRuler.prototype.layout):
1965         (WebInspector.TimelineRuler.prototype._updatePositionOfElement):
1966         (WebInspector.TimelineRuler.prototype._updateMarkers):
1967         (WebInspector.TimelineRuler.prototype._updateSelection):
1968         Apply the position updates to "right" in RTL.
1969
1970 2017-03-14  Devin Rousso  <webkit@devinrousso.com>
1971
1972         Web Inspector: RTL: add support for DataGrid disclosure arrows and indentation
1973         https://bugs.webkit.org/show_bug.cgi?id=169582
1974
1975         Reviewed by Brian Burg.
1976
1977         * UserInterface/Views/DataGrid.css:
1978         (body[dir=rtl] .data-grid tr.parent td.disclosure::before):
1979         Flip the image in RTL.
1980
1981         * UserInterface/Views/DataGrid.js:
1982         (WebInspector.DataGrid.prototype._updateScrollbarPadding):
1983         Rework the padding calculation for the scrollbar offset to use "right" in RTL.
1984
1985         * UserInterface/Views/DataGridNode.js:
1986         (WebInspector.DataGridNode.prototype.get indentPadding):
1987         (WebInspector.DataGridNode.prototype.createCell):
1988         Rework the padding calculation for indenting (as a child) to use "right" in RTL.
1989
1990         (WebInspector.DataGridNode.prototype.isEventWithinDisclosureTriangle):
1991         Calculate the position of the ::before triangle based on the layout direction.
1992
1993         (WebInspector.DataGridNode.prototype.get leftPadding): Deleted.
1994
1995 2017-03-14  Devin Rousso  <webkit@devinrousso.com>
1996
1997         Web Inspector: RTL: add support for TimelineOverview sidebar and container layout
1998         https://bugs.webkit.org/show_bug.cgi?id=169583
1999
2000         Reviewed by Brian Burg.
2001
2002         * UserInterface/Views/TimelineOverview.css:
2003         (body[dir=ltr] .timeline-overview > :matches(.navigation-bar.timelines, .tree-outline.timelines)):
2004         (body[dir=rtl] .timeline-overview > :matches(.navigation-bar.timelines, .tree-outline.timelines)):
2005         (body[dir=ltr] .timeline-overview:not(.frames) > :matches(.scroll-container, .timeline-ruler, .graphs-container)):
2006         (body[dir=rtl] .timeline-overview:not(.frames) > :matches(.scroll-container, .timeline-ruler, .graphs-container)):
2007         (.timeline-overview > .navigation-bar.timelines):
2008         (.timeline-overview > .tree-outline.timelines):
2009         (.timeline-overview > .scroll-container):
2010         (.timeline-overview > .timeline-ruler):
2011         (.timeline-overview > .graphs-container):
2012         (.timeline-overview > .scroll-container > .scroll-width-sizer):
2013         (body[dir=ltr] .timeline-overview > .scroll-container > .scroll-width-sizer):
2014         (body[dir=rtl] .timeline-overview > .scroll-container > .scroll-width-sizer):
2015         (.timeline-overview.frames > .graphs-container): Deleted.
2016
2017 2017-03-14  Joseph Pecoraro  <pecoraro@apple.com>
2018
2019         Web Inspector: More accurate Resource Timing data in Web Inspector
2020         https://bugs.webkit.org/show_bug.cgi?id=169577
2021
2022         Reviewed by Youenn Fablet.
2023
2024         * UserInterface/Models/ResourceTimingData.js:
2025         (WebInspector.ResourceTimingData.prototype.get requestStart):
2026         (WebInspector.ResourceTimingData.prototype.get responseStart):
2027         Fallback to the startTime if available instead of using the
2028         inaccurate WebContentProcess gathered timestamps.
2029
2030         (WebInspector.ResourceTimingData.prototype.markResponseEndTime):
2031         Verify responseEnd compared to other times we may have.
2032
2033 2017-03-14  Devin Rousso  <webkit@devinrousso.com>
2034
2035         Web Inspector: Remove unnecessary assert for Number.percentageString
2036         https://bugs.webkit.org/show_bug.cgi?id=169589
2037
2038         Reviewed by Matt Baker.
2039
2040         * UserInterface/Base/Utilities.js:
2041         (Number.percentageString):
2042
2043 2017-03-14  Devin Rousso  <webkit@devinrousso.com>
2044
2045         Web Inspector: allow the user to copy locked CSS selectors in Style - Rules
2046         https://bugs.webkit.org/show_bug.cgi?id=169587
2047
2048         Reviewed by Matt Baker.
2049
2050         * UserInterface/Views/CSSStyleDeclarationSection.css:
2051         (.style-declaration-section:matches(.locked, .selector-locked) > .header > .selector):
2052
2053 2017-03-13  Nikita Vasilyev  <nvasilyev@apple.com>
2054
2055         Web Inspector: WebSockets: color of outgoing message icon should match text color
2056         https://bugs.webkit.org/show_bug.cgi?id=169512
2057         <rdar://problem/30994284>
2058
2059         Reviewed by Devin Rousso.
2060
2061         Include SVG icon as an inline SVG element to make currentColor work.
2062
2063         * Localizations/en.lproj/localizedStrings.js:
2064         * UserInterface/Main.html:
2065         * UserInterface/Views/WebSocketContentView.css:
2066         (.web-socket.content-view .outgoing .icon): Deleted.
2067         * UserInterface/Views/WebSocketContentView.js:
2068         (WebInspector.WebSocketContentView):
2069         (WebInspector.WebSocketContentView.prototype.addFrame):
2070         (WebInspector.WebSocketContentView.prototype._addRow):
2071         (WebInspector.WebSocketContentView.prototype._timeStringFromTimestamp): Deleted.
2072         * UserInterface/Views/WebSocketDataGridNode.js: Added.
2073         (WebInspector.WebSocketDataGridNode.prototype.createCellContent):
2074         (WebInspector.WebSocketDataGridNode.prototype._timeStringFromTimestamp):
2075         (WebInspector.WebSocketDataGridNode):
2076
2077 2017-03-13  Devin Rousso  <webkit@devinrousso.com>
2078
2079         Web Inspector: Event Listeners detail section is unhelpful, default should show listeners by element rather than by event
2080         https://bugs.webkit.org/show_bug.cgi?id=167077
2081
2082         Reviewed by Joseph Pecoraro.
2083
2084         * Localizations/en.lproj/localizedStrings.js:
2085         * UserInterface/Main.html:
2086         * UserInterface/Views/EventListenerSection.js: Removed.
2087
2088         * UserInterface/Models/DOMNode.js:
2089         (WebInspector.DOMNode.prototype.eventListeners): Renamed to getEventListeners.
2090
2091         * UserInterface/Views/DOMNodeDetailsSidebarPanel.css: Added.
2092         (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
2093         (body[dir=ltr] .sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
2094         (body[dir=rtl] .sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
2095         (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter:hover):
2096         (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter:active):
2097         (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners.collapsed > .header > .filter):
2098         (.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter > select):
2099
2100         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
2101         (WebInspector.DOMNodeDetailsSidebarPanel.createOption):
2102         (WebInspector.DOMNodeDetailsSidebarPanel):
2103         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.createEventListenerSection):
2104         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByEvent):
2105         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByNode):
2106         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.eventListenersCallback):
2107         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners):
2108         Add a filter to the Event Listeners section that changes the way in which event listeners
2109         are grouped.  Currently supports two methods:
2110          - Group by Event
2111          - Group by Node
2112
2113         * UserInterface/Views/EventListenerSectionGroup.js:
2114         (WebInspector.EventListenerSectionGroup):
2115         Add ability to display the event type.
2116
2117         * UserInterface/Views/DetailsSection.css:
2118         (.details-section):
2119         Drive-by fix: CSS variable was named incorrectly.
2120
2121 2017-03-13  Devin Rousso  <webkit@devinrousso.com>
2122
2123         Web Inspector: Event Listeners section is missing 'once', 'passive' event listener flags
2124         https://bugs.webkit.org/show_bug.cgi?id=167080
2125
2126         Reviewed by Joseph Pecoraro.
2127
2128         * Localizations/en.lproj/localizedStrings.js:
2129         * UserInterface/Views/EventListenerSectionGroup.js:
2130         (WebInspector.EventListenerSectionGroup):
2131         (WebInspector.EventListenerSectionGroup.prototype._type): Deleted.
2132
2133 2017-03-11  Matt Baker  <mattbaker@apple.com>
2134
2135         Web Inspector: Add "goto arrow" to DOMNodeTreeElements in the Debugger tab
2136         https://bugs.webkit.org/show_bug.cgi?id=168752
2137
2138         Reviewed by Devin Rousso.
2139
2140         * UserInterface/Base/DOMUtilities.js:
2141         (WebInspector.linkifyNodeReference):
2142         (WebInspector.linkifyNodeReferenceElement):
2143         Expose linkifying an existing element.
2144
2145         * UserInterface/Views/DOMNodeTreeElement.js:
2146         (WebInspector.DOMNodeTreeElement):
2147         (WebInspector.DOMNodeTreeElement.prototype.populateContextMenu):
2148         Add "Reveal in DOM Tree" context menu item.
2149
2150         * UserInterface/Views/DebuggerSidebarPanel.css:
2151         (.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node:not(:hover, .selected) .status .go-to-arrow):
2152         Hide the go-to arrow unless hovering or selected.
2153
2154 2017-03-11  Matt Baker  <mattbaker@apple.com>
2155
2156         Web Inspector: RTL: fix broken font content view
2157         https://bugs.webkit.org/show_bug.cgi?id=169513
2158
2159         Reviewed by Brian Burg.
2160
2161         Add RTL support to the Font content view.
2162
2163         * UserInterface/Views/FontResourceContentView.css:
2164         (.content-view.resource.font .preview > .line > .metric):
2165         (body[dir=ltr] .content-view.resource.font .preview > .line > .metric):
2166         (body[dir=rtl] .content-view.resource.font .preview > .line > .metric):
2167         Compensate for the flipped z-order of the content and metric elements in
2168         RTL by pushing metrics below the content.
2169
2170 2017-03-10  Matt Baker  <mattbaker@apple.com>
2171
2172         Web Inspector: Only show "Break on..." menu if backend supports DOM breakpoints
2173         https://bugs.webkit.org/show_bug.cgi?id=169488
2174
2175         Reviewed by Joseph Pecoraro.
2176
2177         * UserInterface/Controllers/DOMBreakpointTreeController.js:
2178         (WebInspector.DOMBreakpointTreeController.appendBreakpointContextMenuItems):
2179         Added assert to catch future cases where UI is being added when
2180         backend support doesn't exist.
2181
2182         * UserInterface/Views/DOMTreeElement.js:
2183         (WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
2184         Check for backend support.
2185
2186 2017-03-10  Devin Rousso  <dcrousso+webkit@gmail.com>
2187
2188         Web Inspector: popover with compositing reasons in Layers sidebar has hard to read layout
2189         https://bugs.webkit.org/show_bug.cgi?id=167081
2190
2191         Reviewed by Brian Burg.
2192
2193         * UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
2194         (.layer-tree-popover):
2195         (.layer-tree-popover p):
2196         (.layer-tree-popover ul):
2197         (body[dir=ltr] .layer-tree-popover ul):
2198         (body[dir=rtl] .layer-tree-popover ul):
2199         Show `list-item-style` and make the <p> element stand out more (larger and bold).
2200
2201 2017-03-10  Devin Rousso  <dcrousso+webkit@gmail.com>
2202
2203         Web Inspector: in Resources tab navigation bar, can't save the same file from context menu item more than once
2204         https://bugs.webkit.org/show_bug.cgi?id=165665
2205
2206         Reviewed by Brian Burg.
2207
2208         * UserInterface/Views/ContextMenuUtilities.js:
2209         (WebInspector.appendContextMenuItemsForSourceCode):
2210         Force the "Save As" dialog to appear when saving, as otherwise subsequent clicks on "Save"
2211         in the context menu will just override the previously saved file.
2212
2213 2017-03-10  Devin Rousso  <dcrousso+webkit@gmail.com>
2214
2215         Web Inspector: REGRESSION(r213149): scope bar items in elements sidebar have wrong padding/margin
2216         https://bugs.webkit.org/show_bug.cgi?id=169204
2217
2218         Reviewed by Brian Burg.
2219
2220         * UserInterface/Views/Sidebar.css:
2221         (.sidebar > .navigation-bar):
2222         Replace `align-content` with `align-items`, as the former causes the child elements to fill
2223         as much vertical space as possible instead of only using the space necessary for its content.
2224
2225         * UserInterface/Views/ScopeRadioButtonNavigationItem.css:
2226         (.scope-radio-button-navigation-item > .arrows):
2227         Drive-by fix: ensure that the up/down arrows are not clickable, which would prevent the
2228         <select> from showing.
2229
2230 2017-03-09  Matt Baker  <mattbaker@apple.com>
2231
2232         Web Inspector: Add XHR breakpoints UI
2233         https://bugs.webkit.org/show_bug.cgi?id=168763
2234         <rdar://problem/30952439>
2235
2236         Reviewed by Joseph Pecoraro.
2237
2238         * Localizations/en.lproj/localizedStrings.js:
2239         New UI strings.
2240
2241         * UserInterface/Controllers/DOMDebuggerManager.js:
2242         Plumbing for XHR breakpoints. Like DOM breakpoints, they are tracked
2243         per-page. Unlike DOM breakpoints, they have no separate "resolved"
2244         state, and are simply added/removed as the main frame changes.
2245
2246         (WebInspector.DOMDebuggerManager):
2247         (WebInspector.DOMDebuggerManager.prototype.get allRequestsBreakpoint):
2248         (WebInspector.DOMDebuggerManager.prototype.get xhrBreakpoints):
2249         (WebInspector.DOMDebuggerManager.prototype.isBreakpointRemovable):
2250         (WebInspector.DOMDebuggerManager.prototype.removeDOMBreakpoint):
2251         (WebInspector.DOMDebuggerManager.prototype.addXHRBreakpoint):
2252         (WebInspector.DOMDebuggerManager.prototype.removeXHRBreakpoint):
2253         (WebInspector.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
2254         (WebInspector.DOMDebuggerManager.prototype._detachXHRBreakpoint):
2255         (WebInspector.DOMDebuggerManager.prototype._updateXHRBreakpoint.breakpointUpdated):
2256         (WebInspector.DOMDebuggerManager.prototype._updateXHRBreakpoint):
2257         (WebInspector.DOMDebuggerManager.prototype._resolveXHRBreakpoint):
2258         (WebInspector.DOMDebuggerManager.prototype._saveXHRBreakpoints):
2259         (WebInspector.DOMDebuggerManager.prototype._domBreakpointDisabledStateDidChange):
2260         (WebInspector.DOMDebuggerManager.prototype._xhrBreakpointDisabledStateDidChange):
2261         (WebInspector.DOMDebuggerManager.prototype._mainResourceDidChange):
2262         (WebInspector.DOMDebuggerManager.prototype._saveBreakpoints): Deleted.
2263         Renamed `saveDOMBreakpoints`.
2264
2265         * UserInterface/Controllers/DebuggerManager.js:
2266         (WebInspector.DebuggerManager.prototype._pauseReasonFromPayload):
2267         Plumbing for XHR breakpoint pause reason.
2268
2269         * UserInterface/Controllers/XHRBreakpointTreeController.js: Added.
2270         Creates the "All Requests" breakpoint, handles DOMDebuggerManager messages,
2271         and updates an associated tree outline as XHR breakpoints are added and removed.
2272
2273         (WebInspector.XHRBreakpointTreeController):
2274         (WebInspector.XHRBreakpointTreeController.prototype.revealAndSelect):
2275         (WebInspector.XHRBreakpointTreeController.prototype.disconnect):
2276         (WebInspector.XHRBreakpointTreeController.prototype._xhrBreakpointAdded):
2277         (WebInspector.XHRBreakpointTreeController.prototype._xhrBreakpointRemoved):
2278         (WebInspector.XHRBreakpointTreeController.prototype._mainResourceDidChange):
2279         (WebInspector.XHRBreakpointTreeController.prototype._reset):
2280
2281         * UserInterface/Main.html:
2282         New files.
2283
2284         * UserInterface/Models/XHRBreakpoint.js: Added.
2285         New model class. XHR breakpoints have an associated URL, which is matched
2286         against the request URL when deciding whether to break. An empty URL matches
2287         all XMLHttpRequests.
2288
2289         (WebInspector.XHRBreakpoint):
2290         (WebInspector.XHRBreakpoint.prototype.get documentURL):
2291         (WebInspector.XHRBreakpoint.prototype.get url):
2292         (WebInspector.XHRBreakpoint.prototype.get disabled):
2293         (WebInspector.XHRBreakpoint.prototype.set disabled):
2294         (WebInspector.XHRBreakpoint.prototype.get serializableInfo):
2295         (WebInspector.XHRBreakpoint.prototype.saveIdentityToCookie):
2296
2297         * UserInterface/Test.html:
2298         New files.
2299
2300         * UserInterface/Views/ContentView.js:
2301         (WebInspector.ContentView.createFromRepresentedObject):
2302         Plumbing for new represented object type, to prevent runtime assertion.
2303
2304         * UserInterface/Views/DOMBreakpointTreeElement.js:
2305         (WebInspector.DOMBreakpointTreeElement):
2306         Reuse BreakpointTreeElement styles.
2307
2308         * UserInterface/Views/DebuggerSidebarPanel.js:
2309         (WebInspector.DebuggerSidebarPanel):
2310         (WebInspector.DebuggerSidebarPanel.prototype.saveStateToCookie):
2311         (WebInspector.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
2312         (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
2313         (WebInspector.DebuggerSidebarPanel.prototype._addXHRBreakpointButtonClicked):
2314         (WebInspector.DebuggerSidebarPanel.prototype.willDismissPopover):
2315
2316         * UserInterface/Views/InputPopover.css: Added.
2317         (.popover .input-popover-content):
2318         (.popover .input-popover-content > .editor):
2319         (.popover .input-popover-content > .editor > .CodeMirror):
2320         (.popover .input-popover-content > .editor > .CodeMirror-scroll):
2321
2322         * UserInterface/Views/InputPopover.js: Added.
2323         New general purpose popover class. Style and structure lifted from
2324         the Popover implementation used by the Probe Expressions UI. A follow-up
2325         has been filed to switch that UI over to this new class:
2326         https://bugs.webkit.org/show_bug.cgi?id=169428.
2327
2328         (WebInspector.InputPopover):
2329         (WebInspector.InputPopover.prototype.get value):
2330         (WebInspector.InputPopover.prototype.get result):
2331         (WebInspector.InputPopover.prototype.show):
2332         (WebInspector.InputPopover.prototype._presentOverTargetElement):
2333
2334         * UserInterface/Views/XHRBreakpointTreeElement.js: Added.
2335         Tree element class for XHR breakpoints. Behaves identically to
2336         script and DOM breakpoint tree elements.
2337
2338         (WebInspector.XHRBreakpointTreeElement):
2339         Reuse BreakpointTreeElement styles.
2340         (WebInspector.XHRBreakpointTreeElement.prototype.onattach):
2341         (WebInspector.XHRBreakpointTreeElement.prototype.ondetach):
2342         (WebInspector.XHRBreakpointTreeElement.prototype.ondelete):
2343         (WebInspector.XHRBreakpointTreeElement.prototype.onenter):
2344         (WebInspector.XHRBreakpointTreeElement.prototype.onspace):
2345         (WebInspector.XHRBreakpointTreeElement.prototype.populateContextMenu):
2346         (WebInspector.XHRBreakpointTreeElement.prototype._statusImageElementClicked):
2347         (WebInspector.XHRBreakpointTreeElement.prototype._statusImageElementFocused):
2348         (WebInspector.XHRBreakpointTreeElement.prototype._statusImageElementMouseDown):
2349         (WebInspector.XHRBreakpointTreeElement.prototype._toggleBreakpoint):
2350         (WebInspector.XHRBreakpointTreeElement.prototype._updateStatus):
2351
2352 2017-03-09  Matt Baker  <mattbaker@apple.com>
2353
2354         REGRESSION (r196271): Web Inspector: DOM element loses focus/active selection after committing an inline attribute editor in DOMTreeOutline
2355         https://bugs.webkit.org/show_bug.cgi?id=168119
2356         <rdar://problem/30466013>
2357
2358         Reviewed by Brian Burg.
2359
2360         Fix a regression caused by http://trac.webkit.org/changeset/196271, which
2361         updated WebInspector.isEventTargetAnEditableField to detect the editing
2362         scenarios used by DOMTreeElement and DataGrid. This subtly changed the
2363         behavior of WebInspector._focusChanged, which expected all editable fields
2364         to be backed by a CodeMirror instance.
2365
2366         * UserInterface/Base/Main.js:
2367
2368 2017-03-09  Joseph Pecoraro  <pecoraro@apple.com>
2369
2370         Web Inspector: Show HTTP protocol version and other Network Load Metrics (IP Address, Priority, Connection ID)
2371         https://bugs.webkit.org/show_bug.cgi?id=29687
2372         <rdar://problem/19281586>
2373
2374         Reviewed by Matt Baker and Brian Burg.
2375
2376         These columns are available in the Network DataGrids, but are
2377         initially hidden. They can be shown by right clicking on the
2378         table header and showing these columns. We are going to rework
2379         the default list of visible columns later.
2380
2381         * Localizations/en.lproj/localizedStrings.js:
2382         New localized strings for data grid headers and Low/Medium/High.
2383
2384         * UserInterface/Controllers/FrameResourceManager.js:
2385         (WebInspector.FrameResourceManager.prototype.resourceRequestDidFinishLoading):
2386         * UserInterface/Protocol/NetworkObserver.js:
2387         (WebInspector.NetworkObserver.prototype.loadingFinished):
2388         Pass metrics on to the Resource.
2389
2390         * UserInterface/Models/Resource.js:
2391         (WebInspector.Resource):
2392         (WebInspector.Resource.displayNameForType):
2393         (WebInspector.Resource.responseSourceFromPayload):
2394         (WebInspector.Resource.networkPriorityFromPayload):
2395         (WebInspector.Resource.connectionIdentifierFromPayload):
2396         (WebInspector.Resource.prototype.get protocol):
2397         (WebInspector.Resource.prototype.get priority):
2398         (WebInspector.Resource.prototype.get remoteAddress):
2399         (WebInspector.Resource.prototype.get connectionIdentifier):
2400         (WebInspector.Resource.prototype.updateWithMetrics):
2401         Include metrics accessors and default values.
2402
2403         * UserInterface/Views/NetworkGridContentView.js:
2404         (WebInspector.NetworkGridContentView):
2405         * UserInterface/Views/NetworkTimelineView.js:
2406         (WebInspector.NetworkTimelineView):
2407         Add metrics columns if the backend may be sending them.
2408
2409         * UserInterface/Views/ResourceTimelineDataGridNode.js:
2410         (WebInspector.ResourceTimelineDataGridNode.prototype.get data):
2411         (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
2412         (WebInspector.ResourceTimelineDataGridNode.prototype._displayNameForPriority):
2413         (WebInspector.ResourceTimelineDataGridNode.prototype._cachedCellContent):
2414         Display strings for new columns.
2415
2416         * UserInterface/Views/TimelineDataGridNode.js:
2417         * UserInterface/Views/TimelineRecordBar.js:
2418         (WebInspector.TimelineRecordBar.prototype.refresh):
2419         Avoid assertions if Graph column is unavailable.
2420
2421         * UserInterface/Views/DataGrid.js:
2422         (WebInspector.DataGrid):
2423         (WebInspector.DataGrid.prototype.createSettings):
2424         (WebInspector.DataGrid.prototype.setColumnVisible):
2425         Better support for restoring user preference of initially
2426         hidden columns which the user may have shown.
2427
2428         * UserInterface/Views/ResourceDetailsSidebarPanel.js:
2429         (WebInspector.ResourceDetailsSidebarPanel):
2430         (WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
2431         Show the Protocol and Priority in the Resources sidebar.
2432
2433 2017-03-09  Nikita Vasilyev  <nvasilyev@apple.com>
2434
2435         Web Inspector: Show individual messages in the content pane for a WebSocket
2436         https://bugs.webkit.org/show_bug.cgi?id=169011
2437
2438         Reviewed by Joseph Pecoraro.
2439
2440         When selecting a Web Socket in Network panel or Resources, display a table
2441         of all messages that have been sent and received.
2442
2443         * Localizations/en.lproj/localizedStrings.js:
2444         * UserInterface/Controllers/FrameResourceManager.js:
2445         (WebInspector.FrameResourceManager.prototype.webSocketWillSendHandshakeRequest):
2446         Add a walltime parameter.
2447
2448         (WebInspector.FrameResourceManager.prototype._webSocketFrameReceivedOrSent):
2449         Fix a bug: masked messages are outgoing, not incoming.
2450
2451         * UserInterface/Images/ArrowUp.svg: Added.
2452         * UserInterface/Images/gtk/ArrowUp.svg: Added.
2453         Add an icon for outgoing messages.
2454
2455         * UserInterface/Main.html:
2456         * UserInterface/Models/WebSocketResource.js:
2457         (WebInspector.WebSocketResource):
2458         (WebInspector.WebSocketResource.prototype.get walltime):
2459         (WebInspector.WebSocketResource.prototype.addFrame):
2460         (WebInspector.WebSocketResource.prototype._walltimeForWebSocketTimestamp):
2461         * UserInterface/Protocol/NetworkObserver.js:
2462         (WebInspector.NetworkObserver.prototype.webSocketWillSendHandshakeRequest):
2463         (WebInspector.NetworkObserver.prototype.webSocketFrameSent):
2464         (WebInspector.NetworkObserver.prototype.webSocketFrameError):
2465         (WebInspector.NetworkObserver):
2466         * UserInterface/Views/NetworkSidebarPanel.js:
2467         (WebInspector.NetworkSidebarPanel.prototype.treeElementAddedOrChanged):
2468         * UserInterface/Views/ResourceClusterContentView.js:
2469         (WebInspector.ResourceClusterContentView.prototype.get responseContentView):
2470         * UserInterface/Views/WebSocketContentView.css: Added.
2471         (.web-socket.content-view > .data-grid):
2472         (.web-socket.content-view > .data-grid table.data):
2473         (.web-socket.content-view > .data-grid td.data-column,):
2474         (body[dir=ltr] .web-socket.content-view > .data-grid .data-column > div):
2475         (body[dir=rtl] .web-socket.content-view > .data-grid .data-column > div):
2476         (.web-socket.content-view .icon):
2477         (body[dir=ltr] .web-socket.content-view .icon):
2478         (body[dir=rtl] .web-socket.content-view .icon):
2479         (.web-socket.content-view .outgoing .icon):
2480         (.web-socket.content-view .data-grid.variable-height-rows table.data tr:nth-child(odd)):
2481         (.web-socket.content-view .data-grid table.data tr.revealed):
2482         (.web-socket.content-view .data-grid.variable-height-rows table.data tr.outgoing):
2483         (.web-socket.content-view .data-grid.variable-height-rows table.data tr.non-text-frame):
2484
2485         * UserInterface/Views/WebSocketContentView.js: Added.
2486         (WebInspector.WebSocketContentView):
2487         Only show Time column when walltime is available.
2488
2489         (WebInspector.WebSocketContentView.textForOpcode):
2490         (WebInspector.WebSocketContentView.prototype.shown):
2491         (WebInspector.WebSocketContentView.prototype.hidden):
2492         (WebInspector.WebSocketContentView.prototype.addFrame):
2493         (WebInspector.WebSocketContentView.prototype._updateFrames):
2494         Only render frames that haven't been rendered yet.
2495
2496         (WebInspector.WebSocketContentView.prototype._addRow):
2497         (WebInspector.WebSocketContentView.prototype._timeStringFromTimestamp):
2498
2499 2017-03-09  Matt Baker  <mattbaker@apple.com>
2500
2501         Web Inspector: DOMTreeManager dispatches DocumentUpdated twice when the document is cleared
2502         https://bugs.webkit.org/show_bug.cgi?id=168984
2503
2504         Reviewed by Timothy Hatcher.
2505
2506         * UserInterface/Controllers/DOMTreeManager.js:
2507         (WebInspector.DOMTreeManager.prototype._setDocument):
2508         Compare old and new document values before dispatching message.
2509
2510 2017-03-09  Devin Rousso  <dcrousso+webkit@gmail.com>
2511
2512         Web Inspector: Add settings for controlling Styles sidebar intelligence
2513         https://bugs.webkit.org/show_bug.cgi?id=169181
2514
2515         Reviewed by Timothy Hatcher.
2516
2517         * Localizations/en.lproj/localizedStrings.js:
2518         * UserInterface/Base/Setting.js:
2519         Add three new settings:
2520          - stylesShowInlineWarnings
2521          - stylesInsertNewline
2522          - stylesSelectOnFirstClick
2523
2524         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
2525         (WebInspector.CSSStyleDeclarationTextEditor):
2526         (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseDown):
2527         (WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseUp):
2528         (WebInspector.CSSStyleDeclarationTextEditor.prototype._createInlineSwatches.update):
2529         (WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded):
2530
2531         * UserInterface/Views/SettingsTabContentView.css:
2532         (.content-view.settings > .separator): Added.
2533         (.content-view.settings > .setting-container):
2534         (.content-view.settings > .setting-container.combined):
2535
2536         * UserInterface/Views/SettingsTabContentView.js:
2537         (WebInspector.SettingsTabContentView.prototype.layout.createContainer):
2538         (WebInspector.SettingsTabContentView.prototype.layout.createSeparator): Added.
2539         (WebInspector.SettingsTabContentView.prototype.layout):
2540
2541 2017-03-08  Matt Baker  <mattbaker@apple.com>
2542
2543         Web Inspector: Add DOM breakpoints UI for node/subtree modification events
2544         https://bugs.webkit.org/show_bug.cgi?id=168101
2545
2546         Reviewed by Joseph Pecoraro.
2547
2548         * Localizations/en.lproj/localizedStrings.js:
2549         New UI strings.
2550
2551         * UserInterface/Base/Main.js:
2552         (WebInspector.loaded):
2553         Add new manager.
2554
2555         * UserInterface/Controllers/DOMBreakpointTreeController.js: Added.
2556         Handles messages from DOMDebuggerManager, and updates an associated
2557         tree outline as DOM breakpoints are added and removed.
2558         (WebInspector.DOMBreakpointTreeController):
2559         (WebInspector.DOMBreakpointTreeController.appendBreakpointContextMenuItems):
2560         (WebInspector.DOMBreakpointTreeController.prototype.disconnect):
2561         (WebInspector.DOMBreakpointTreeController.prototype._addBreakpointTreeElement):
2562         (WebInspector.DOMBreakpointTreeController.prototype._removeBreakpointTreeElement):
2563         (WebInspector.DOMBreakpointTreeController.prototype._domBreakpointAdded):
2564         (WebInspector.DOMBreakpointTreeController.prototype._domBreakpointRemoved):
2565         (WebInspector.DOMBreakpointTreeController.prototype._domBreakpointResolvedStateDidChange):
2566         (WebInspector.DOMBreakpointTreeController.prototype._mainResourceDidChange):
2567
2568         * UserInterface/Controllers/DOMDebuggerManager.js: Added.
2569         New frontend manager for the DOMDebugger domain. A DOM breakpoint is
2570         described by a location (URL and node path) and type. The manager keeps
2571         all known DOM breakpoints in memory, and considers a breakpoint to be
2572         "resolved" once its location is pushed to the frontend.
2573
2574         Breakpoints located within a child frame are still associated with the
2575         main frame. Whenever a the main resource of a child frame changes, all
2576         unresolved breakpoints associated with the main frame are speculatively
2577         resolved.
2578
2579         (WebInspector.DOMDebuggerManager):
2580         (WebInspector.DOMDebuggerManager.prototype.get supported):
2581         (WebInspector.DOMDebuggerManager.prototype.get domBreakpoints):
2582         (WebInspector.DOMDebuggerManager.prototype.domBreakpointsForNode):
2583         (WebInspector.DOMDebuggerManager.prototype.addDOMBreakpoint):
2584         (WebInspector.DOMDebuggerManager.prototype.removeDOMBreakpoint):
2585         (WebInspector.DOMDebuggerManager.prototype._detachDOMBreakpoint):
2586         (WebInspector.DOMDebuggerManager.prototype._detachBreakpointsForFrame):
2587         (WebInspector.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
2588         (WebInspector.DOMDebuggerManager.prototype._resolveDOMBreakpoint):
2589         (WebInspector.DOMDebuggerManager.prototype._updateDOMBreakpoint):
2590         (WebInspector.DOMDebuggerManager.prototype._saveBreakpoints):
2591         (WebInspector.DOMDebuggerManager.prototype._domBreakpointDisabledStateDidChange):
2592         (WebInspector.DOMDebuggerManager.prototype._childFrameWasRemoved):
2593         (WebInspector.DOMDebuggerManager.prototype._mainFrameDidChange):
2594         (WebInspector.DOMDebuggerManager.prototype._mainResourceDidChange):
2595         (WebInspector.DOMDebuggerManager.prototype._nodeInserted):
2596         (WebInspector.DOMDebuggerManager.prototype._nodeRemoved):
2597
2598         * UserInterface/Controllers/DebuggerManager.js:
2599         (WebInspector.DebuggerManager.prototype._pauseReasonFromPayload):
2600         Plumbing for DOM breakpoint pause reason.
2601
2602         * UserInterface/Images/DOMBreakpoint.svg: Added.
2603         New art. Visually very similar to a script breakpoint, with some
2604         tweaks to make it suitable for display in the DOM tree gutter.
2605
2606         * UserInterface/Main.html:
2607         New files.
2608
2609         * UserInterface/Models/DOMBreakpoint.js: Added.
2610         New model class. DOM breakpoints are either associated with a DOM node
2611         when created, or constructed from a cookie and resolved in the future.
2612
2613         (WebInspector.DOMBreakpoint):
2614         (WebInspector.DOMBreakpoint.prototype.get type):
2615         (WebInspector.DOMBreakpoint.prototype.get url):
2616         (WebInspector.DOMBreakpoint.prototype.get path):
2617         (WebInspector.DOMBreakpoint.prototype.get disabled):
2618         (WebInspector.DOMBreakpoint.prototype.set disabled):
2619         (WebInspector.DOMBreakpoint.prototype.get domNodeIdentifier):
2620         (WebInspector.DOMBreakpoint.prototype.set domNodeIdentifier):
2621         (WebInspector.DOMBreakpoint.prototype.get serializableInfo):
2622         (WebInspector.DOMBreakpoint.prototype.saveIdentityToCookie):
2623
2624         * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
2625         * UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
2626         * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
2627         * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
2628         * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
2629         * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
2630         The DOMDebugger should not be enabled for legacy backends, since legacy
2631         backend support was never tested and may have issues.
2632
2633         * UserInterface/Test.html:
2634         New files.
2635
2636         * UserInterface/Test/Test.js:
2637         (WebInspector.loaded):
2638         Add new manager.
2639
2640         * UserInterface/Views/ContentView.js:
2641         (WebInspector.ContentView.createFromRepresentedObject):
2642         (WebInspector.ContentView.resolvedRepresentedObjectForRepresentedObject):
2643         Plumbing for additional represented object types. DOMNode is included
2644         because the Debugger sidebar panel shows DOM breakpoint tree elements
2645         as children of a DOM node tree element.
2646
2647         * UserInterface/Views/DOMBreakpointTreeElement.css: Added.
2648         (.item.dom-breakpoint .icon):
2649         (.item.dom-breakpoint.breakpoint-paused-icon .icon):
2650         (.item.dom-breakpoint .status img):
2651         (.item.dom-breakpoint .status > img.disabled):
2652         Styles for "Pause Reason" and "DOM Breakpoints" sections.
2653
2654         * UserInterface/Views/DOMBreakpointTreeElement.js: Added.
2655         Tree element class for DOM breakpoints. Includes a breakpoint status
2656         element and context menu for delete/disable actions, similar to script
2657         breakpoint tree elements.
2658
2659         (WebInspector.DOMBreakpointTreeElement):
2660         (WebInspector.DOMBreakpointTreeElement.displayNameForType):
2661         (WebInspector.DOMBreakpointTreeElement.prototype.onattach):
2662         (WebInspector.DOMBreakpointTreeElement.prototype.ondetach):
2663         (WebInspector.DOMBreakpointTreeElement.prototype.ondelete):
2664         (WebInspector.DOMBreakpointTreeElement.prototype.onenter):
2665         (WebInspector.DOMBreakpointTreeElement.prototype.onspace):
2666         (WebInspector.DOMBreakpointTreeElement.prototype.populateContextMenu):
2667         (WebInspector.DOMBreakpointTreeElement.prototype._statusImageElementClicked):
2668         (WebInspector.DOMBreakpointTreeElement.prototype._statusImageElementFocused):
2669         (WebInspector.DOMBreakpointTreeElement.prototype._statusImageElementMouseDown):
2670         (WebInspector.DOMBreakpointTreeElement.prototype._toggleBreakpoint):
2671         (WebInspector.DOMBreakpointTreeElement.prototype._updateStatus):
2672
2673         * UserInterface/Views/DOMNodeTreeElement.js: Added.
2674         Tree element class for DOM nodes, which serves as a parent for DOM
2675         breakpoint tree elements. Includes context menu for bulk delete/disable
2676         of all child breakpoints.
2677
2678         (WebInspector.DOMNodeTreeElement):
2679         (WebInspector.DOMNodeTreeElement.prototype.ondelete):
2680         (WebInspector.DOMNodeTreeElement.prototype.populateContextMenu):
2681
2682         * UserInterface/Views/DOMTreeContentView.css:
2683         Styles for DOM breakpoint gutter and breakpoint indicators, including
2684         "left pointing" breakpoints for RTL mode.
2685
2686         (.content-view.dom-tree.show-gutter .tree-outline.dom):
2687         (body[dir=ltr] .content-view.dom-tree.show-gutter .tree-outline.dom):
2688         (body[dir=rtl] .content-view.dom-tree.show-gutter .tree-outline.dom):
2689         (.content-view.dom-tree .tree-outline.dom li .status-image):
2690         (body[dir=ltr] .content-view.dom-tree .tree-outline.dom li .status-image):
2691         (body[dir=rtl] .content-view.dom-tree .tree-outline.dom li .status-image):
2692         (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint):
2693         (body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li.selected .status-image.breakpoint):
2694         (.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled):
2695         (.content-view.dom-tree .tree-outline.dom.breakpoints-disabled li .status-image.breakpoint):
2696         (.content-view.dom-tree .tree-outline.dom.breakpoints-disabled li .status-image.breakpoint.disabled):
2697
2698         * UserInterface/Views/DOMTreeContentView.js:
2699         Add support for DOM breakpoint gutter and breakpoint indicators.
2700         Breakpoint indicator elements are part of the DOM tree element, and are
2701         updated whenever there a breakpoint's disabled or resolved state changes.
2702
2703         (WebInspector.DOMTreeContentView):
2704         (WebInspector.DOMTreeContentView.prototype.get breakpointGutterEnabled):
2705         (WebInspector.DOMTreeContentView.prototype.set breakpointGutterEnabled):
2706         (WebInspector.DOMTreeContentView.prototype.shown):
2707         (WebInspector.DOMTreeContentView.prototype.closed):
2708         (WebInspector.DOMTreeContentView.prototype._domTreeElementAdded):
2709         (WebInspector.DOMTreeContentView.prototype._domBreakpointAddedOrRemoved):
2710         (WebInspector.DOMTreeContentView.prototype._domBreakpointDisabledStateDidChange):
2711         (WebInspector.DOMTreeContentView.prototype._domBreakpointResolvedStateDidChange):
2712         (WebInspector.DOMTreeContentView.prototype._updateBreakpointStatus):
2713         (WebInspector.DOMTreeContentView.prototype._restoreBreakpointsAfterUpdate):
2714         (WebInspector.DOMTreeContentView.prototype._breakpointsEnabledDidChange):
2715
2716         * UserInterface/Views/DOMTreeElement.js:
2717         Add support for breakpoint status element and content menu.
2718         (WebInspector.DOMTreeElement):
2719         (WebInspector.DOMTreeElement.prototype.get breakpointStatus):
2720         (WebInspector.DOMTreeElement.prototype.set breakpointStatus):
2721         (WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
2722         (WebInspector.DOMTreeElement.prototype.updateTitle):
2723         (WebInspector.DOMTreeElement.prototype._updateBreakpointStatus):
2724         (WebInspector.DOMTreeElement.prototype._statusImageContextmenu):
2725
2726         * UserInterface/Views/DebuggerSidebarPanel.css:
2727         (.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node .titles):
2728         (.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node .icon):
2729         Styles for DOM node tree elements.
2730
2731         * UserInterface/Views/DebuggerSidebarPanel.js:
2732         Add new DOM Breakpoints section, and support for the "DOM" pause reason.
2733
2734         (WebInspector.DebuggerSidebarPanel):
2735         (WebInspector.DebuggerSidebarPanel.prototype.closed):
2736         (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
2737         (WebInspector.DebuggerSidebarPanel.prototype._domBreakpointAddedOrRemoved):
2738
2739         * UserInterface/Views/FrameDOMTreeContentView.js:
2740         (WebInspector.FrameDOMTreeContentView.prototype._rootDOMNodeAvailable):
2741         Restore DOM breakpoints once the root node is available.
2742
2743         * UserInterface/Views/Variables.css:
2744         (:root):
2745         Fill and stroke colors for resolved, unresolved, and disabled breakpoints.
2746
2747         * Versions/Inspector-iOS-10.0.json:
2748         * Versions/Inspector-iOS-10.3.json:
2749         * Versions/Inspector-iOS-7.0.json:
2750         * Versions/Inspector-iOS-8.0.json:
2751         * Versions/Inspector-iOS-9.0.json:
2752         * Versions/Inspector-iOS-9.3.json:
2753
2754 2017-03-08  Devin Rousso  <dcrousso+webkit@gmail.com>
2755
2756         Web Inspector: RTL: table header columns and cells don't line up, dragging seems backwards
2757         https://bugs.webkit.org/show_bug.cgi?id=168289
2758
2759         Reviewed by Brian Burg.
2760
2761         Changed the algorithm used to position columns when in RTL to use right offsets instead of
2762         left offsets.  This also applies to the resizer elements between columns.
2763
2764         * UserInterface/Views/DataGrid.css:
2765         (.data-grid):
2766         (.data-grid th):
2767         (body[dir=ltr] .data-grid :matches(th, td):not(:last-child)):
2768         (body[dir=rtl] .data-grid :matches(th, td):not(:last-child)):
2769         (.data-grid th:matches(.sort-ascending, .sort-descending)):
2770         (body[dir=ltr] .data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)):
2771         (body[dir=rtl] .data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)):
2772         (.data-grid .right div):
2773         (body[dir=ltr] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child):
2774         (body[dir=rtl] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child):
2775         (.data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child::after):
2776         (body[dir=ltr] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child::after):
2777         (body[dir=rtl] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child::after):
2778         (.data-grid th.sort-ascending > div:first-child::after):
2779         (.data-grid th.sort-descending > div:first-child::after):
2780         (.data-grid tr.parent td.disclosure::before):
2781         (body[dir=ltr] .data-grid tr.parent td.disclosure::before):
2782         (body[dir=rtl] .data-grid tr.parent td.disclosure::before):
2783         (.data-grid td .icon):
2784         (body[dir=ltr] .data-grid td .icon):
2785         (body[dir=rtl] .data-grid td .icon):
2786         (.data-grid td .go-to-arrow):
2787         (body[dir=ltr] .data-grid td .go-to-arrow):
2788         (body[dir=rtl] .data-grid td .go-to-arrow):
2789         (.data-grid .resizer):
2790         (body[dir=ltr] .data-grid .resizer):
2791         (body[dir=rtl] .data-grid .resizer):
2792         (.data-grid table:matches(.header, .data)):
2793         (body[dir=ltr] .data-grid table:matches(.header, .data)):
2794         (body[dir=rtl] .data-grid table:matches(.header, .data)):
2795         (body[dir=ltr] .data-grid :matches(th, td):first-child):
2796         (body[dir=rtl] .data-grid :matches(th, td):first-child):
2797         (@media (-webkit-min-device-pixel-ratio: 2)):
2798         (.data-grid :matches(th, td):not(:last-child)): Deleted.
2799         (.data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)): Deleted.
2800         (.data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child): Deleted.
2801         (.data-grid table.header, .data-grid table.data): Deleted.
2802
2803         * UserInterface/Views/DataGrid.js:
2804         (WebInspector.DataGrid.prototype._positionResizerElements):
2805         (WebInspector.DataGrid.prototype._positionHeaderViews):
2806         (WebInspector.DataGrid.prototype.resizerDragging):
2807
2808 2017-03-08  Joseph Pecoraro  <pecoraro@apple.com>
2809
2810         Web Inspector: Should be able to see where Resources came from (Memory Cache, Disk Cache)
2811         https://bugs.webkit.org/show_bug.cgi?id=164892
2812         <rdar://problem/29320562>
2813
2814         Reviewed by Brian Burg.
2815
2816         * Localizations/en.lproj/localizedStrings.js:
2817         New localized strings for memory/disk cache information.
2818
2819         * UserInterface/Controllers/FrameResourceManager.js:
2820         (WebInspector.FrameResourceManager.prototype.markResourceRequestAsServedFromMemoryCache):
2821         Make this legacy path more explicit.
2822
2823         (WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
2824         Make this memory cache path more explicit.
2825
2826         (WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
2827         Pass the resource's response source onward.
2828
2829         * UserInterface/Models/Resource.js:
2830         (WebInspector.Resource):
2831         (WebInspector.Resource.responseSourceFromPayload):
2832         (WebInspector.Resource.prototype.get responseSource):
2833         (WebInspector.Resource.prototype.hasResponse):
2834         (WebInspector.Resource.prototype.updateForResponse):
2835         (WebInspector.Resource.prototype.markAsCached):
2836         (WebInspector.Resource.prototype.legacyMarkServedFromMemoryCache):
2837         (WebInspector.Resource.prototype.legacyMarkServedFromDiskCache):
2838         Include a WebInspector.ResponseSource enum.
2839         Update a Resource's responseSource state where appropriate.
2840
2841         * UserInterface/Protocol/NetworkObserver.js:
2842         (WebInspector.NetworkObserver.prototype.requestServedFromCache):
2843         Mark legacy path.
2844
2845         * UserInterface/Views/NetworkGridContentView.js:
2846         (WebInspector.NetworkGridContentView):
2847         * UserInterface/Views/NetworkTimelineView.js:
2848         (WebInspector.NetworkTimelineView):
2849         Tweak default column sizes to make Cached and graph columns a little larger.
2850
2851         * UserInterface/Views/ResourceTimelineDataGridNode.js:
2852         (WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
2853         (WebInspector.ResourceTimelineDataGridNode.prototype._cachedCellContent):
2854         Update "Cached" column data with more information if available.
2855
2856         * UserInterface/Views/NetworkGridContentView.css:
2857         (.content-view.network-grid > .data-grid .cache-type):
2858         (.content-view.network-grid > .data-grid:matches(:focus, .force-focus) tr.selected .cache-type):
2859         Style the cache type a secondary color.
2860
2861 2017-03-08  Devin Rousso  <dcrousso+webkit@gmail.com>
2862
2863         Web Inspector: add a "create breakpoint" context menu item for linkified source locations
2864         https://bugs.webkit.org/show_bug.cgi?id=47442
2865
2866         Reviewed by Brian Burg.
2867
2868         * UserInterface/Base/Main.js:
2869         (WebInspector.isShowingResourcesTab): Added.
2870         (WebInspector.linkifyElement):
2871         Now calls WebInspector.appendContextMenuItemsForSourceCode on "contextmenu" events for the
2872         created element.
2873
2874         * UserInterface/Controllers/DebuggerManager.js:
2875         (WebInspector.DebuggerManager.prototype.breakpointForSourceCodeLocation):
2876         Returns the first breakpoint (since there should only be one) that matches the given location.
2877
2878         * UserInterface/Views/ContextMenuUtilities.js:
2879         (WebInspector.appendContextMenuItemsForSourceCode):
2880         Rework parameters to also accept a WebInspector.SourceCodeLocation, thereby allowing the
2881         setting of breakpoints so long as the associated WebInspector.SourceCode is a script.
2882
2883         * UserInterface/Views/Main.css:
2884         (.resource-link, .go-to-link):
2885         Prevent link from being selected.
2886
2887 2017-03-08  Devin Rousso  <dcrousso+webkit@gmail.com>
2888
2889         Web Inspector: RTL: Switching back to System Direction doesn't change the dock side
2890         https://bugs.webkit.org/show_bug.cgi?id=169323
2891
2892         Reviewed by Brian Burg.
2893
2894         * UserInterface/Base/Main.js:
2895         (WebInspector.setLayoutDirection):
2896         Change the dock side based on the resolved layout direction, not the current setting value.
2897
2898 2017-03-08  Matt Baker  <mattbaker@apple.com>
2899
2900         REGRESSION (r212998): Web Inspector: DetailsSections with options have broken layout
2901         https://bugs.webkit.org/show_bug.cgi?id=169350
2902
2903         Reviewed by Brian Burg.
2904
2905         * UserInterface/Views/DetailsSection.css:
2906         (.details-section):
2907         Fix negative margin.
2908         (body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow),):
2909         (body[dir=ltr] .details-section > .header::before,):
2910         (body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow, .options > .navigation-bar),): Deleted.
2911         It looks like :matches doesn't accept compound selectors in its selector list.
2912
2913 2017-03-07  Joseph Pecoraro  <pecoraro@apple.com>
2914
2915         Web Inspector: DOM Tree broken if an element has a "debounce" attribute
2916         https://bugs.webkit.org/show_bug.cgi?id=169336
2917         <rdar://problem/30899430>
2918
2919         Reviewed by Brian Burg.
2920
2921         * UserInterface/Models/DOMNode.js:
2922         (WebInspector.DOMNode):
2923         (WebInspector.DOMNode.prototype.getAttribute):
2924         (WebInspector.DOMNode.prototype.removeAttribute.mycallback):
2925         (WebInspector.DOMNode.prototype.removeAttribute):
2926         Convert the attributes map to an actual Map to avoid name collisions
2927         with Object.prototype properties.
2928
2929 2017-03-07  Chris Dumez  <cdumez@apple.com>
2930
2931         Drop non-standard MessageEvent.webkitInitMessageEvent()
2932         https://bugs.webkit.org/show_bug.cgi?id=169295
2933
2934         Reviewed by Joseph Pecoraro.
2935
2936         Drop MessageEvent.webkitInitMessageEvent and update parameters for various
2937         init*Event() operations to match the current implementation.
2938
2939         * UserInterface/Models/NativeFunctionParameters.js:
2940
2941 2017-03-04  Nikita Vasilyev  <nvasilyev@apple.com>
2942
2943         Web Inspector: Show Web Socket connections in Network tab
2944         https://bugs.webkit.org/show_bug.cgi?id=167520
2945
2946         Reviewed by Joseph Pecoraro.
2947
2948         Show Web Socket connections in Network and Resources tabs. Display HTTP headers
2949         of Web Socket handshake request in the details sidebar.
2950
2951         * UserInterface/Controllers/FrameResourceManager.js:
2952         (WebInspector.FrameResourceManager.prototype.initialize):
2953         (WebInspector.FrameResourceManager.prototype.webSocketCreated):
2954         (WebInspector.FrameResourceManager.prototype.webSocketWillSendHandshakeRequest):
2955         webSocketWillSendHandshakeRequest doesn't receive a request URL as one of its parameters.
2956         Store URLs received from webSocketCreated method in _webSocketIdentifierToURL map.
2957
2958         (WebInspector.FrameResourceManager.prototype.webSocketHandshakeResponseReceived):
2959         (WebInspector.FrameResourceManager.prototype.webSocketFrameReceived):
2960         (WebInspector.FrameResourceManager.prototype.webSocketFrameSent):
2961         (WebInspector.FrameResourceManager.prototype.webSocketClosed):
2962         Mark resource as finished when Web Socket handshake is complete or Web Socket is closed.
2963         This may change in the future.
2964
2965         (WebInspector.FrameResourceManager.prototype._webSocketFrameReceivedOrSent):
2966         * UserInterface/Main.html:
2967
2968         * UserInterface/Models/WebSocketResource.js: Added.
2969         (WebInspector.WebSocketResource):
2970         (WebInspector.WebSocketResource.prototype.set readyState):
2971         (WebInspector.WebSocketResource.prototype.get readyState):
2972         (WebInspector.WebSocketResource.prototype.get frames):
2973         (WebInspector.WebSocketResource.prototype.addFrame):
2974         Introduce WebSocketResource model to store WebSocket frames (incoming and outgoing messages)
2975         and readyState.
2976
2977         * UserInterface/Protocol/NetworkObserver.js:
2978         (WebInspector.NetworkObserver.prototype.webSocketCreated):
2979         (WebInspector.NetworkObserver.prototype.webSocketWillSendHandshakeRequest):
2980         (WebInspector.NetworkObserver.prototype.webSocketHandshakeResponseReceived):
2981         (WebInspector.NetworkObserver.prototype.webSocketClosed):
2982         (WebInspector.NetworkObserver.prototype.webSocketFrameReceived):
2983         (WebInspector.NetworkObserver.prototype.webSocketFrameError):
2984         (WebInspector.NetworkObserver.prototype.webSocketFrameSent):
2985         (WebInspector.NetworkObserver):
2986         Add corresponding methods for the newly added FrameResourceManager methods.
2987
2988         * UserInterface/Test.html:
2989         * UserInterface/Views/NetworkSidebarPanel.js:
2990         (WebInspector.NetworkSidebarPanel.prototype.treeElementAddedOrChanged):
2991         Don't show the go to arrow for WebSocket items since WebSocketContentView isn't implemented
2992         yet.
2993
2994         * UserInterface/Views/ResourceClusterContentView.js:
2995         (WebInspector.ResourceClusterContentView.prototype.get responseContentView):
2996         Don't show any content views for WebSocket items.
2997
2998         * UserInterface/Views/ResourceTreeElement.js:
2999         (WebInspector.ResourceTreeElement.prototype.ondblclick):
3000         Don't open WebSocket URL in a new browser tab.
3001
3002 2017-03-02  Matt Baker  <mattbaker@apple.com>
3003
3004         Web Inspector: Should be able to push nodes in an iframe subtree to the frontend
3005         https://bugs.webkit.org/show_bug.cgi?id=169086
3006
3007         Reviewed by Joseph Pecoraro.
3008
3009         * UserInterface/Views/DOMTreeContentView.js:
3010         (WebInspector.DOMTreeContentView.prototype._selectedNodeDidChange):
3011         Use the URL of the main frame instead of the content frame URL.
3012
3013 2017-03-01  Devin Rousso  <dcrousso+webkit@gmail.com>
3014
3015         Web Inspector: Annotators should not be enabled if the TextEditor is not visible
3016         https://bugs.webkit.org/show_bug.cgi?id=169059
3017
3018         Reviewed by Joseph Pecoraro.
3019
3020         * UserInterface/Views/DebuggerSidebarPanel.js:
3021         (WebInspector.DebuggerSidebarPanel.prototype._addResource):
3022         (WebInspector.DebuggerSidebarPanel.prototype._addScript):
3023         Only call `showDefaultContentViewForTreeElement` if the panel has been added to a sidebar.
3024
3025         It is not valid to simply check whether the panel is visible, as the sidebar can be collapsed.
3026         In that case, we still want to display the content view, so we instead check that the panel
3027         has been added to a sidebar, meaning that it is ready to be displayed in the current tab.
3028
3029 2017-02-28  Devin Rousso  <dcrousso+webkit@gmail.com>
3030
3031         Web Inspector: RTL: expose the Layout Direction setting in Production builds, keep using LTR by default
3032         https://bugs.webkit.org/show_bug.cgi?id=168999
3033
3034         Reviewed by Brian Burg.
3035
3036         * Localizations/en.lproj/localizedStrings.js:
3037         * UserInterface/Views/SettingsTabContentView.js:
3038         (WebInspector.SettingsTabContentView.prototype.layout):
3039         Remove the WebInspector.isDebugUIEnabled() check around the Layout Direction setting.
3040
3041 2017-02-28  Devin Rousso  <dcrousso+webkit@gmail.com>
3042
3043         Web Inspector: It is possible to get the New Tab button in addition to the seven expected tabs
3044         https://bugs.webkit.org/show_bug.cgi?id=168976
3045
3046         Reviewed by Brian Burg.
3047
3048         * UserInterface/Views/TabBar.css:
3049         (.tab-bar.collapsed:not(.hide-titles) > .item:not(.pinned):hover > .icon):
3050         (.tab-bar.collapsed:not(.hide-titles) > .item:hover > .close):
3051         (.tab-bar.collapsed:not(.hide-titles) > .item:not(.pinned, .default-tab):hover > .icon): Deleted.
3052         (.tab-bar.collapsed:not(.hide-titles) > .item:not(.default-tab):hover > .close): Deleted.
3053
3054 2017-02-28  Devin Rousso  <dcrousso+webkit@gmail.com>
3055
3056         Web Inspector: CSS variable uses that are unresolved should have an error or warning icon
3057         https://bugs.webkit.org/show_bug.cgi?id=168352
3058
3059         Reviewed by Brian Burg.
3060
3061         * Localizations/en.lproj/localizedStrings.js:
3062
3063         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
3064         (WebInspector.CSSStyleDeclarationTextEditor.prototype._createInlineSwatches.update):
3065         Insert a warning icon if the variable is not found in the computed style.
3066
3067 2017-02-25  Devin Rousso  <dcrousso+webkit@gmail.com>
3068
3069         Web Inspector: RTL: add support for Color Picker
3070         https://bugs.webkit.org/show_bug.cgi?id=168853
3071
3072         Reviewed by Brian Burg.
3073
3074         * UserInterface/Views/ColorPicker.css:
3075         (.color-picker):
3076         (body[dir=ltr] .color-picker > .brightness):
3077         (body[dir=rtl] .color-picker > .brightness):
3078         (body[dir=ltr] .color-picker > .opacity):
3079         (body[dir=rtl] .color-picker > .opacity):
3080         (.color-picker > .brightness): Deleted.
3081         (.color-picker > .opacity): Deleted.
3082
3083         * UserInterface/Views/ColorWheel.js:
3084         (WebInspector.ColorWheel.prototype.set dimension):
3085         Set the CSS width and height style of the container element to ensure that the element only
3086         takes up the space it needs.
3087
3088         * UserInterface/Views/Slider.css:
3089         (.slider):
3090         * UserInterface/Views/Variables.css:
3091         (:root):
3092         Add `--slider-height` CSS variable for convenience.
3093
3094 2017-02-25  Devin Rousso  <dcrousso+webkit@gmail.com>
3095
3096         Web Inspector: RTL: add support for Bezier/Spring editor
3097         https://bugs.webkit.org/show_bug.cgi?id=168854
3098
3099         Reviewed by Brian Burg.
3100
3101         * UserInterface/Views/BezierEditor.css:
3102         (.bezier-editor):
3103         (body[dir=ltr] .bezier-editor):
3104         (body[dir=rtl] .bezier-editor):
3105         (.bezier-editor > .bezier-preview-timing):
3106         (body[dir=ltr] .bezier-editor > .bezier-preview-timing):
3107         (body[dir=rtl] .bezier-editor > .bezier-preview-timing):
3108         (@keyframes bezierPreview):
3109         (body[dir=rtl] .bezier-editor > .bezier-container):
3110         (.bezier-editor > .number-input-container > input):
3111         (body[dir=ltr] .bezier-editor > .number-input-container > input):
3112         (body[dir=rtl] .bezier-editor > .number-input-container > input):
3113
3114         * UserInterface/Views/SpringEditor.css:
3115         (.spring-editor > .spring-timing):
3116         (.spring-editor > .spring-timing::before):
3117         (.spring-editor > .spring-timing::after):
3118         (body[dir=ltr] .spring-editor > .spring-timing::before, body[dir=rtl] .spring-editor > .spring-timing::after):
3119         (body[dir=ltr] .spring-editor > .spring-timing::after, body[dir=rtl] .spring-editor > .spring-timing::before):
3120         (.spring-editor > .number-input-container > .number-input-row > input):
3121
3122         * UserInterface/Views/SpringEditor.js:
3123         (WebInspector.SpringEditor.prototype._updatePreviewAnimation):
3124
3125 2017-02-25  Devin Rousso  <dcrousso+webkit@gmail.com>
3126
3127         Web Inspector: RTL: Elements tab Styles sidebar label/arrows need adjustment
3128         https://bugs.webkit.org/show_bug.cgi?id=168746
3129
3130         Reviewed by Brian Burg.
3131
3132         * UserInterface/Views/ScopeRadioButtonNavigationItem.css:
3133         (.scope-radio-button-navigation-item):
3134         (.scope-radio-button-navigation-item > .scope-radio-button-item-select):
3135         (body[dir=ltr] .scope-radio-button-navigation-item > .scope-radio-button-item-select):
3136         (body[dir=rtl] .scope-radio-button-navigation-item > .scope-radio-button-item-select):
3137         (.scope-radio-button-navigation-item > .scope-radio-button-item-select:focus):
3138         (.scope-radio-button-navigation-item > .arrows):
3139         (body[dir=ltr] .scope-radio-button-navigation-item > .arrows):
3140         (body[dir=rtl] .scope-radio-button-navigation-item > .arrows):
3141
3142 2017-02-25  Devin Rousso  <dcrousso+webkit@gmail.com>
3143
3144         Web Inspector: copying a search result out of Search Tab navigation sidebar does nothing
3145         https://bugs.webkit.org/show_bug.cgi?id=167074
3146
3147         Reviewed by Brian Burg.
3148
3149         * UserInterface/Base/Main.js:
3150         (WebInspector._copy):
3151         * UserInterface/Views/SearchTabContentView.js:
3152         (WebInspector.SearchTabContentView.prototype.handleCopyEvent):
3153         Provide the container TabContentView with the opportunity to intercept the copy event.
3154
3155         * UserInterface/Models/SourceCodeTextRange.js:
3156         (WebInspector.SourceCodeTextRange.prototype.get synthesizedTextValue):
3157         * UserInterface/Views/SearchResultTreeElement.js:
3158         (WebInspector.SearchResultTreeElement.prototype.get synthesizedTextValue):
3159         Generate a string with the format `${url}:${lineNumber}:${resultLine}`.
3160
3161 2017-02-25  Devin Rousso  <dcrousso+webkit@gmail.com>
3162
3163         Web Inspector: RTL: Styles - Rules sidebar icons are misaligned
3164         https://bugs.webkit.org/show_bug.cgi?id=168807
3165
3166         Reviewed by Brian Burg.
3167
3168         * UserInterface/Views/CSSStyleDeclarationSection.css:
3169         (.style-declaration-section > .header):
3170         (body[dir=ltr] .style-declaration-section > .header):
3171         (body[dir=rtl] .style-declaration-section > .header):
3172         (.style-declaration-section.locked > .header > .locked-icon):
3173         (body[dir=ltr] .style-declaration-section.locked > .header > .locked-icon):
3174         (body[dir=rtl] .style-declaration-section.locked > .header > .locked-icon):
3175         (.style-declaration-section > .header > .icon):
3176         (body[dir=ltr] .style-declaration-section > .header > .icon):
3177         (body[dir=rtl] .style-declaration-section > .header > .icon):
3178         (.style-declaration-section > .header > textarea):
3179         (body[dir=ltr] .style-declaration-section > .header > textarea):
3180         (body[dir=rtl] .style-declaration-section > .header > textarea):
3181         (.style-declaration-section.invalid-selector > .header > .icon):
3182
3183         * UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
3184         (.sidebar > .panel.details.css-style > .content):
3185         (.sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
3186         (body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
3187         (body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
3188         (.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
3189         (body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
3190         (body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
3191         (.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
3192         (body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
3193         (body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
3194
3195         * UserInterface/Views/Variables.css:
3196         (:root):
3197
3198 2017-02-25  Devin Rousso  <dcrousso+webkit@gmail.com>
3199
3200         Web Inspector: RTL: disclosure triangles in details section headers should be flipped and aligned right
3201         https://bugs.webkit.org/show_bug.cgi?id=168283
3202
3203         Reviewed by Brian Burg.
3204
3205         * UserInterface/Views/DetailsSection.css:
3206         (.details-section):
3207         (.details-section > .header):
3208         (body[dir=ltr] .details-section > .header):
3209         (body[dir=rtl] .details-section > .header):
3210         (.details-section > .header > .options > .navigation-bar):
3211         (body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow, .options > .navigation-bar), body[dir=rtl] .details-section > .header::before):
3212         (body[dir=ltr] .details-section > .header::before, body[dir=rtl] .details-section > .header > :matches(label, .node-link, .go-to-arrow, .options > .navigation-bar)):
3213         (.details-section > .header::before):
3214         (body[dir=rtl] .details-section > .header::before):
3215         (.details-section > .header > label):
3216         (.details-section > .header > label > input[type="checkbox"]):
3217         (body[dir=ltr] .details-section > .header > label > input[type="checkbox"]):
3218         (body[dir=rtl] .details-section > .header > label > input[type="checkbox"]):
3219         (.details-section > .header .go-to-arrow):
3220         (body[dir=ltr] .details-section > .header .go-to-arrow):
3221         (body[dir=rtl] .details-section > .header .go-to-arrow):
3222         (.details-section > .content > .group > .row.simple > .label):
3223         (body[dir=ltr] .details-section > .content > .group > .row.simple > .label):
3224         (body[dir=rtl] .details-section > .content > .group > .row.simple > .label):
3225         (.details-section > .content > .group > .row.simple > .value):
3226         (body[dir=ltr] .details-section > .content > .group > .row.simple > .value):
3227         (body[dir=rtl] .details-section > .content > .group > .row.simple > .value):
3228         (.details-section > .content > .group > .row.simple > .value .go-to-arrow):
3229         (body[dir=ltr] .details-section > .content > .group > .row.simple > .value .go-to-arrow):
3230         (body[dir=rtl] .details-section > .content > .group > .row.simple > .value .go-to-arrow):
3231         (.details-section > .header > :matches(.node-link, .go-to-arrow)): Deleted.
3232
3233 2017-02-24  Devin Rousso  <dcrousso+webkit@gmail.com>
3234
3235         Web Inspector: RTL: add support for Error page
3236         https://bugs.webkit.org/show_bug.cgi?id=168855
3237
3238         Reviewed by Brian Burg.
3239
3240         * UserInterface/Debug/UncaughtExceptionReporter.css:
3241         (.uncaught-exception-sheet):
3242         (body[dir=ltr] .uncaught-exception-sheet):
3243         (body[dir=rtl] .uncaught-exception-sheet):
3244         (.uncaught-exception-sheet h1 > img):
3245         (body[dir=ltr] .uncaught-exception-sheet h1 > img):
3246         (body[dir=rtl] .uncaught-exception-sheet h1 > img):
3247         (.uncaught-exception-sheet h2 > img):
3248         (body[dir=ltr] .uncaught-exception-sheet h2 > img):
3249         (body[dir=rtl] .uncaught-exception-sheet h2 > img):
3250         (.uncaught-exception-sheet dd):
3251         (body[dir=ltr] .uncaught-exception-sheet dd):
3252         (body[dir=rtl] .uncaught-exception-sheet dd):
3253         (.uncaught-exception-sheet ul):
3254         (body[dir=ltr] .uncaught-exception-sheet ul):
3255         (body[dir=rtl] .uncaught-exception-sheet ul):
3256
3257 2017-02-24  Devin Rousso  <dcrousso+webkit@gmail.com>
3258
3259         Web Inspector: Uncaught Exception: Unknown angle units "undefined"
3260         https://bugs.webkit.org/show_bug.cgi?id=168851
3261
3262         Reviewed by Brian Burg.
3263
3264         * UserInterface/Views/GradientEditor.js:
3265         (WebInspector.GradientEditor.prototype._gradientTypeChanged):
3266
3267 2017-02-24  Jon Lee  <jonlee@apple.com>
3268
3269         Alias "system-ui" for the System font name
3270         https://bugs.webkit.org/show_bug.cgi?id=151493
3271
3272         Reviewed by Tim Horton and Joseph Pecoraro.
3273
3274         * UserInterface/Models/CSSKeywordCompletions.js: Ditto.
3275
3276 2017-02-23  Devin Rousso  <dcrousso+webkit@gmail.com>
3277
3278         Web Inspector: RTL: DOM Tree spacing is wrong
3279         https://bugs.webkit.org/show_bug.cgi?id=168744
3280
3281         Reviewed by Brian Burg.
3282
3283         * UserInterface/Base/Utilities.js:
3284         (Element.prototype.totalOffsetRight):
3285
3286         * UserInterface/Views/DOMTreeOutline.css:
3287         (.tree-outline.dom):
3288         (.tree-outline.dom ol):
3289         (body[dir=ltr] .tree-outline.dom ol):
3290         (body[dir=rtl] .tree-outline.dom ol):
3291         (.tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
3292         (body[dir=ltr] .tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
3293         (body[dir=rtl] .tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
3294         (.tree-outline.dom li.selected + ol.children.expanded):
3295         (.tree-outline.dom li):
3296         (body[dir=ltr] .tree-outline.dom li):
3297         (body[dir=rtl] .tree-outline.dom li):
3298         (.tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
3299         (body[dir=rtl] .tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
3300         (body[dir=ltr] .tree-outline.dom.single-node li):
3301         (body[dir=rtl] .tree-outline.dom.single-node li):
3302         (.tree-outline.dom li.parent):
3303         (body[dir=ltr] .tree-outline.dom li.parent):
3304         (body[dir=rtl] .tree-outline.dom li.parent):
3305         (body[dir=ltr] .tree-outline.dom li .html-tag.close):
3306         (body[dir=rtl] .tree-outline.dom li .html-tag.close):
3307         (.tree-outline.dom li.parent::before):
3308         (body[dir=rtl] .tree-outline.dom li.parent::before):
3309         (body[dir=ltr] .tree-outline.dom li.parent::before):
3310         (.tree-outline.dom li.parent.shadow::after):
3311         (body[dir=ltr] .tree-outline.dom li.parent.shadow::after):
3312         (body[dir=rtl] .tree-outline.dom li.parent.shadow::after):
3313         (.tree-outline.dom.single-node li): Deleted.
3314         (.tree-outline.dom li .html-tag.close): Deleted.
3315
3316         * UserInterface/Views/TreeElement.js:
3317         (WebInspector.TreeElement.prototype.isEventWithinDisclosureTriangle):
3318         Calculate the position of the ::before triangle based on the layout direction.
3319
3320 2017-02-23  Devin Rousso  <dcrousso+webkit@gmail.com>
3321
3322         Web Inspector: RTL: navigation sidebar section disclosure triangles and tree element icons should be aligned right
3323         https://bugs.webkit.org/show_bug.cgi?id=168284
3324
3325         Reviewed by Brian Burg.
3326
3327         * UserInterface/Views/TreeOutline.css:
3328         (.tree-outline,):
3329         (.tree-outline.large .item):
3330         (body[dir=ltr] .tree-outline .item :matches(.disclosure-button, .icon)):
3331         (body[dir=rtl] .tree-outline .item :matches(.disclosure-button, .icon)):
3332         (body[dir=ltr] .tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon):
3333         (body[dir=rtl] .tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon):
3334         (.tree-outline .item .disclosure-button):
3335         (body[dir=rtl] .tree-outline .item .disclosure-button):
3336         (.tree-outline .item .icon):
3337         (body[dir=ltr] .tree-outline .item .icon):
3338         (body[dir=rtl] .tree-outline .item .icon):
3339         (.tree-outline.large .item .icon):
3340         (.tree-outline .item .status):
3341         (body[dir=ltr] .tree-outline .item .status):
3342         (body[dir=rtl] .tree-outline .item .status):
3343         (.tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon): Deleted.
3344
3345         * UserInterface/Views/TreeOutline.js:
3346         (WebInspector.TreeOutline._generateStyleRulesIfNeeded):
3347
3348 2017-02-22  Devin Rousso  <dcrousso+webkit@gmail.com>
3349
3350         Web Inspector: RTL: Sidebar borders are on the wrong side
3351         https://bugs.webkit.org/show_bug.cgi?id=168743
3352
3353         Reviewed by Matt Baker.
3354
3355         * UserInterface/Views/Sidebar.css:
3356         (body[dir=ltr] .sidebar.right > .resizer, body[dir=rtl] .sidebar.left > .resizer):
3357         (body[dir=ltr] .sidebar.left > .resizer, body[dir=rtl] .sidebar.right > .resizer):
3358         (body[dir=ltr] .sidebar.left, body[dir=rtl] .sidebar.right):
3359         (body[dir=ltr] .sidebar.right, body[dir=rtl] .sidebar.left):
3360         (.sidebar.right > .resizer): Deleted.
3361         (.sidebar.left > .resizer): Deleted.
3362         (.sidebar.left): Deleted.
3363         (.sidebar.right): Deleted.
3364
3365         * UserInterface/Views/Sidebar.js:
3366         (WebInspector.Sidebar.prototype.resizerDragging):
3367         Reverse the change if the direction is RTL.
3368
3369 2017-02-22  Brian Burg  <bburg@apple.com>
3370
3371         Web Inspector: RTL: Settings tab labels need adjustment
3372         https://bugs.webkit.org/show_bug.cgi?id=168497
3373
3374         Reviewed by Matt Baker.
3375
3376         Flip margins. Use 'text-align: end' instead of manually choosing
3377         right and left based on body[dir].
3378
3379         * UserInterface/Views/SettingsTabContentView.css:
3380         (.content-view.settings > .setting-container > .setting-name):
3381         (body[dir=ltr] .content-view.settings > .setting-container > .setting-name):
3382         (body[dir=rtl] .content-view.settings > .setting-container > .setting-name):
3383         (.content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]):
3384         (body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]):
3385         (body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]):
3386         (.content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
3387         (body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
3388         (body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
3389
3390 2017-02-21  Devin Rousso  <dcrousso+webkit@gmail.com>
3391
3392         Web Inspector: Prefer Resources tab over Network tab when showing files
3393         https://bugs.webkit.org/show_bug.cgi?id=168021
3394
3395         Reviewed by Timothy Hatcher.
3396
3397         * UserInterface/Base/Main.js:
3398         (WebInspector.handlePossibleLinkClick):
3399         (WebInspector.openURL):
3400         Add `options` parameter to provide greater customization.
3401
3402         * UserInterface/Views/TabBrowser.js:
3403         (WebInspector.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
3404         Add logic for `ignoreNetworkTab` option that will ignore instances of NetworkTabContentView.
3405
3406         * UserInterface/Controllers/BreakpointPopoverController.js:
3407         (WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems):
3408         * UserInterface/Protocol/InspectorFrontendAPI.js:
3409         (InspectorFrontendAPI.showMainResourceForFrame):
3410         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
3411         (WebInspector.CSSStyleDeclarationTextEditor.tokenTrackingControllerHighlightedRangeWasClicked.showRangeInSourceCode):
3412         * UserInterface/Views/ComputedStyleDetailsPanel.js:
3413         (WebInspector.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty):
3414         * UserInterface/Views/ContextMenuUtilities.js:
3415         (WebInspector.appendContextMenuItemsForSourceCode):
3416         * UserInterface/Views/DOMTreeContentView.js:
3417         (WebInspector.DOMTreeContentView.prototype._mouseWasClicked.followLink):
3418         * UserInterface/Views/DOMTreeElement.js:
3419         (WebInspector.DOMTreeElement.prototype._populateTagContextMenu):
3420         (WebInspector.DOMTreeElement.prototype._showCustomElementDefinition):
3421         * UserInterface/Views/DebuggerSidebarPanel.js:
3422         (WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
3423         * UserInterface/Views/NetworkTimelineView.js:
3424         (WebInspector.NetworkTimelineView.prototype.showContentViewForTreeElement):
3425         * UserInterface/Views/ObjectTreeBaseTreeElement.js:
3426         (WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
3427         * UserInterface/Views/ResourceSidebarPanel.js:
3428         (WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
3429         * UserInterface/Views/ResourceTimelineDataGridNode.js:
3430         (WebInspector.ResourceTimelineDataGridNode.prototype._dataGridNodeGoToArrowClicked):
3431         * UserInterface/Views/SearchSidebarPanel.js:
3432         (WebInspector.SearchSidebarPanel.prototype._treeSelectionDidChange):
3433         (WebInspector.SearchSidebarPanel.prototype._treeElementDoubleClick):
3434         * UserInterface/Views/SourceCodeTextEditor.js:
3435         (WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
3436         * UserInterface/Views/TimelineDataGrid.js:
3437         (WebInspector.TimelineDataGrid.prototype._popoverCallStackTreeSelectionDidChange):
3438         * UserInterface/Views/VisualStyleSelectorTreeItem.js:
3439         (WebInspector.VisualStyleSelectorTreeItem.prototype.populateContextMenu):
3440         Change arguments of functions to change content views to ignore the Network tab.
3441
3442         * UserInterface/Views/NetworkGridContentView.js:
3443         (WebInspector.NetworkGridContentView.prototype.hasRepresentedObject):
3444         * UserInterface/Views/NetworkSidebarPanel.js:
3445         (WebInspector.NetworkSidebarPanel.prototype.hasRepresentedObject):
3446         * UserInterface/Views/NetworkTabContentView.js:
3447         (WebInspector.NetworkTabContentView.prototype.canShowRepresentedObject):
3448         Ensure that the Network tab can only display resources that it has entries for in its view.
3449
3450 2017-02-21  Brian Burg  <bburg@apple.com>
3451
3452         Web Inspector: RTL: console scope bar's unread message indicator is misaligned
3453         https://bugs.webkit.org/show_bug.cgi?id=168625
3454
3455         Reviewed by Matt Baker.
3456
3457         * UserInterface/Views/LogContentView.css:
3458         (.log-scope-bar > li.unread::before):
3459         (body[dir=ltr] .log-scope-bar > li.unread::before):
3460         (body[dir=rtl] .log-scope-bar > li.unread::before):
3461
3462 2017-02-20  Joseph Pecoraro  <pecoraro@apple.com>
3463
3464         Web Inspector: Tooltip for "Show console tab" should read "Show Console tab"
3465         https://bugs.webkit.org/show_bug.cgi?id=168630
3466         <rdar://problem/30621662>
3467
3468         Reviewed by Brian Burg.
3469
3470         * Localizations/en.lproj/localizedStrings.js:
3471         * UserInterface/Views/LogContentView.js:
3472         (WebInspector.LogContentView):
3473
3474 2017-02-20  Brian Burg  <bburg@apple.com>
3475
3476         Web Inspector: RTL: back/forward navigation buttons should not be flipped
3477         https://bugs.webkit.org/show_bug.cgi?id=168275
3478         <rdar://problem/30506897>
3479
3480         Reviewed by Matt Baker.
3481
3482         The leading button is always "back" and the trailing button is always "forward", but
3483         in RTL the icons are swapped so that it still looks like '< >' from left-to-right.
3484
3485         Rename the two arrows in the SVG to "left" and "right" arrows, and use them appropriately
3486         in ContentBrowser for back-forward icons based on the layout direction.
3487
3488         * UserInterface/Images/BackForwardArrows.svg:
3489         * UserInterface/Views/ContentBrowser.js:
3490         (WebInspector.ContentBrowser):
3491         * UserInterface/Views/FindBanner.css:
3492         (.find-banner > button.segmented.left > .glyph):
3493         (.find-banner > button.segmented.left:active:not(:disabled) > .glyph):
3494         (.find-banner > button.segmented.right > .glyph):
3495         (.find-banner > button.segmented.right:active:not(:disabled) > .glyph):
3496
3497 2017-02-20  Brian Burg  <bburg@apple.com>
3498
3499         Web Inspector: RTL: hierarchical path components need spacing and icon adjustments
3500         https://bugs.webkit.org/show_bug.cgi?id=168581
3501
3502         Reviewed by Matt Baker.
3503
3504         Flip a bunch of padding, margin, and offsets. Flip the chevron using a CSS transform.
3505
3506         * UserInterface/Views/HierarchicalPathComponent.css:
3507         (.hierarchical-path-component):
3508         (.hierarchical-path-component > .icon):
3509         (.hierarchical-path-component > :matches(.icon, .selector-arrows)):
3510         (body[dir=ltr] .hierarchical-path-component > :matches(.icon, .selector-arrows)):
3511         (body[dir=rtl] .hierarchical-path-component > :matches(.icon, .selector-arrows)):
3512         (.hierarchical-path-component > .selector-arrows):
3513         (.hierarchical-path-component > select):
3514         (body[dir=ltr] .hierarchical-path-component > select):
3515         (body[dir=rtl] .hierarchical-path-component > select):
3516         (.hierarchical-path-component > .separator):
3517         (body[dir=ltr] .hierarchical-path-component > .separator):
3518         (body[dir=rtl] .hierarchical-path-component > .separator):
3519         (.hierarchical-path-component.text-only):
3520         (body[dir=ltr] .hierarchical-path-component.text-only):
3521         (body[dir=rtl] .hierarchical-path-component.text-only):
3522         (body[dir=ltr] .hierarchical-path-component.text-only > select):
3523         (body[dir=rtl] .hierarchical-path-component.text-only > select):
3524
3525 2017-02-20  Brian Burg  <bburg@apple.com>
3526
3527         Web Inspector: RTL: adjust positioning of scope bar items with multiple values
3528         https://bugs.webkit.org/show_bug.cgi?id=168575
3529
3530         Reviewed by Matt Baker.
3531
3532         Mirror the leading margin as necessary. Adjust the <select> positioning
3533         so that the popup is really close to the scope bar item's position.
3534
3535         * UserInterface/Views/ScopeBar.css:
3536         (body[dir=ltr] .scope-bar > li.multiple > select):
3537         (body[dir=rtl] .scope-bar > li.multiple > select):
3538         (.scope-bar > li.multiple > .arrows):
3539         (body[dir=ltr] .scope-bar > li.multiple > .arrows):
3540         (body[dir=rtl] .scope-bar > li.multiple > .arrows):
3541
3542 2017-02-20  Brian Burg  <bburg@apple.com>
3543
3544         Web Inspector: RTL: sidebar expand/collapse icons need to be flipped
3545         https://bugs.webkit.org/show_bug.cgi?id=168276
3546         <rdar://problem/30506999>
3547
3548         Reviewed by Matt Baker.
3549
3550         The sidebars themselves are already flipped due to the layout direction change, but the
3551         icons have a directional design and need to be manually flipped based on the layout direction.
3552
3553         * UserInterface/Views/ContentBrowserTabContentView.js:
3554         (WebInspector.ContentBrowserTabContentView):
3555
3556 2017-02-17  Nikita Vasilyev  <nvasilyev@apple.com>
3557
3558         Web Inspector: Use Maps in FrameResourceManager instead of objects
3559         https://bugs.webkit.org/show_bug.cgi?id=168549
3560         <rdar://problem/30590110>
3561
3562         Reviewed by Joseph Pecoraro.
3563
3564         Use Map for _frameIdentifierMap and _resourceRequestIdentifierMap.
3565
3566         * UserInterface/Controllers/FrameResourceManager.js:
3567         (WebInspector.FrameResourceManager.prototype.initialize):
3568         (WebInspector.FrameResourceManager.prototype.get frames):
3569         (WebInspector.FrameResourceManager.prototype.frameForIdentifier):
3570         (WebInspector.FrameResourceManager.prototype.frameDidDetach):
3571         (WebInspector.FrameResourceManager.prototype.resourceRequestWillBeSent):
3572         (WebInspector.FrameResourceManager.prototype.markResourceRequestAsServedFromMemoryCache):
3573         (WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
3574         (WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
3575         (WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveData):
3576         (WebInspector.FrameResourceManager.prototype.resourceRequestDidFinishLoading):
3577         (WebInspector.FrameResourceManager.prototype.resourceRequestDidFailLoading):
3578         (WebInspector.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
3579         (WebInspector.FrameResourceManager.prototype._processMainFrameResourceTreePayload):
3580         (WebInspector.FrameResourceManager.prototype._createFrame):
3581
3582 2017-02-17  Brian Burg  <bburg@apple.com>
3583
3584         Web Inspector: RTL: Inspector window should dock to the left when using RTL layout direction
3585         https://bugs.webkit.org/show_bug.cgi?id=168273
3586         <rdar://problem/29949325>
3587
3588         Reviewed by Matt Baker.
3589
3590         Add the ability to dock Web Inspector to the left of the inspected view.
3591         The frontend decides whether the Dock to Side button docks left or right
3592         based on the current layout direction.
3593
3594         * Localizations/en.lproj/localizedStrings.js:
3595         * UserInterface/Base/Main.js:
3596         (WebInspector.contentLoaded):
3597         Rename the "Dock to Right" button to "Dock to Side" instead. It's easier to just
3598         have one button than to try and conditionally hide one or the other based on
3599         the layout direction. Change the dock callback and the icon used for the button
3600         depending on layout direction.
3601
3602         (WebInspector.resolvedLayoutDirection):
3603         Refactor getLayoutDirection() to resolvedLayoutDirection() so callers get back
3604         either "ltr" or "rtl".
3605
3606         Flip the dock side if layout direction changes while docked to the side.
3607
3608         Adjust various code paths to account for the existing of left docking. In particular,
3609         resize rejection needs special-casing for resizing leftward from beyond the right side
3610         of the Inspector view when it is docked to the left. Improve related comments since it
3611         took me an unbelievable amount of time to understand what this code is supposed to do.
3612
3613         * UserInterface/Views/Main.css:
3614         (body.docked.right):
3615         (body.docked.left #docked-resizer):
3616         (body.docked:matches(.right, .left) #navigation-sidebar.collapsed > .resizer):
3617         (body.docked.right #navigation-sidebar.collapsed > .resizer): Deleted.
3618         Add .docked.left analogues to rules for .docked.right.
3619
3620 2017-02-17  Brian Burg  <bburg@apple.com>
3621
3622         Web Inspector: RTL: add TabBar support for RTL layout
3623         https://bugs.webkit.org/show_bug.cgi?id=168446
3624
3625         Reviewed by Matt Baker.
3626
3627         There are two types of changes needed:
3628          - Flip leading and trailing borders and margins for the tab items.
3629          - Enumerate tabs in reverse order when performing manual layout.
3630
3631         Along the way, I added some color variables local to TabBar.css to
3632         reduce the number of redundant border-style and color declarations.
3633
3634         * UserInterface/Base/Main.js:
3635         Change this to resolvedLayoutDirection(), and resolve "System" to "ltr" or "rtl".
3636         This makes it suitable for use in manual layout without worrying about "System".
3637         Fix the one existing use-site to not do its own resolution of "System".
3638
3639         * UserInterface/Views/TabBar.css:
3640         Define commonly used colors and border styles and adopt var() usages.
3641         Flip borders that should vary in RTL vs LTR, but not all of them. In
3642         many cases, the border is not direction-dependent and looks the same
3643         on both sides. Also, no need to swap animated properties as all manual
3644         layout is done from the left edge.
3645
3646         (.tab-bar):
3647         (body.window-inactive .tab-bar):
3648         (.tab-bar > .top-border):
3649         (body.window-inactive .tab-bar > .top-border):
3650         (.tab-bar > .item):
3651         (body[dir=ltr] .tab-bar > :nth-child(n + 2 of .item),):
3652         (body[dir=rtl] .tab-bar > :nth-child(n + 2 of .item),):
3653         (.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover):
3654         (body[dir=ltr] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,):
3655         (body[dir=rtl] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,):
3656         (body.window-inactive .tab-bar > .item):
3657         (body[dir=ltr].window-inactive .tab-bar > .item):
3658         (body[dir=rtl].window-inactive .tab-bar > .item):
3659         (.tab-bar > .item > .close):
3660         (body[dir=ltr] .tab-bar > .item > .close):
3661         (body[dir=rtl] .tab-bar > .item > .close):
3662         (.tab-bar > .item:not(.pinned) > .flex-space:last-child):
3663         (body[dir=ltr] .tab-bar > .item:not(.pinned) > .flex-space:last-child):
3664         (body[dir=rtl] .tab-bar > .item:not(.pinned) > .flex-space:last-child):
3665         (.tab-bar > .item > .title):
3666         (body[dir=ltr] .tab-bar > .item > .title):
3667         (body[dir=rtl] .tab-bar > .item > .title):
3668         (.tab-bar.collapsed > .item > .close):
3669         (body[dir=ltr] .tab-bar.collapsed > .item > .close):
3670         (body[dir=rtl] .tab-bar.collapsed > .item > .close):
3671
3672         * UserInterface/Views/TabBar.js:
3673         When doing manual layout, keep doing calculations with respect to the left edge
3674         and keep the list of tab items in logical (LTR) order, as in the DOM. But, when
3675         manually positioning tab items for RTL layout direction, reverse the tab items
3676         so that it matches the screen/layout order of the flipped flexbox items.
3677
3678         (WebInspector.TabBar.prototype.insertTabBarItem):
3679         (WebInspector.TabBar.prototype.removeTabBarItem.animateTabs):
3680         In RTL, put extra space after closing a tab to the left of normal tabs. This
3681         matches the behavior of LTR, but requires some additional measurement since we
3682         still position tabs using `left` and can't simply infer the leftover space.
3683
3684         (WebInspector.TabBar.prototype._tabBarItemsFromLeftToRight): Added.
3685         (WebInspector.TabBar.prototype._handleMouseMoved):
3686         (WebInspector.TabBar.prototype._handleMouseUp):
3687
3688 2017-02-17  Devin Rousso  <dcrousso+webkit@gmail.com>
3689
3690         Web Inspector: Zoom level UI out of sync with setting value
3691         https://bugs.webkit.org/show_bug.cgi?id=168522
3692
3693         Reviewed by Brian Burg.
3694
3695         * UserInterface/Views/SettingsTabContentView.js:
3696         (WebInspector.SettingsTabContentView):
3697         Trigger a layout whenever the zoomFactor setting is changed. This is needed since the
3698         zoomFactor setting can also be modified by global keyboard shortcuts.
3699
3700 2017-02-17  Brian Burg  <bburg@apple.com>
3701
3702         Web Inspector: Loc: Zoom level in Settings tab needs to use localized formatting
3703         https://bugs.webkit.org/show_bug.cgi?id=168465
3704
3705         Reviewed by Matt Baker.
3706
3707         * UserInterface/Views/SettingsTabContentView.js:
3708         (WebInspector.SettingsTabContentView.prototype.layout):
3709         (WebInspector.SettingsTabContentView):
3710
3711 2017-02-17  Brian Burg  <bburg@apple.com>
3712
3713         Web Inspector: RTL: CodeMirror text editor instances have scrollbars on left and right
3714         https://bugs.webkit.org/show_bug.cgi?id=168274
3715
3716         Reviewed by Matt Baker.
3717
3718         CodeMirror doesn't draw its own scrollbar correctly when content is in RTL,
3719         so it draws an extra scrollbar on the right side. And, for the majority of
3720         cases, we don't want to view CSS / JS content aligned to the right.
3721
3722         Manually set the "dir" attribute for all CodeMirror editor instances to "ltr".
3723         Clients can override this if custom RTL layout is available in a particular case.
3724
3725         * UserInterface/Views/CodeMirrorEditor.js:
3726         (WebInspector.CodeMirrorEditor.create):
3727         (WebInspector.CodeMirrorEditor):
3728
3729 2017-02-17  Joseph Pecoraro  <pecoraro@apple.com>
3730
3731         Web Inspector: Timeline DataGridNodes are lacking detail in title
3732         https://bugs.webkit.org/show_bug.cgi?id=168529
3733         <rdar://problem/30579959>
3734
3735         Reviewed by Brian Burg.
3736
3737         * UserInterface/Views/TimelineDataGridNode.js:
3738         (WebInspector.TimelineDataGridNode.prototype.displayName):
3739         Include detailed information for DataGridNode display names, since we
3740         want to show maximum detail for records in the DataGrid.
3741
3742 2017-02-16  Brian Burg  <bburg@apple.com>
3743
3744         Web Inspector: add DebugUI setting to manually override UI layout direction
3745         https://bugs.webkit.org/show_bug.cgi?id=168222
3746
3747         Reviewed by Joseph Pecoraro.
3748
3749         Expose three layout direction settings:
3750          - System (inherit system UI layout direction)
3751          - LTR (the default regardless of system language)
3752          - RTL (under development, only accessible via this menu)
3753
3754         * UserInterface/Base/Main.js:
3755         The UI layout direction is normally only set once per frontend load.
3756         There is no expectation on macOS that applications can switch dynamically.
3757         But, for DebugUI purposes we need to switch the layout direction quickly.
3758         Store the new setting and trigger a hard reload of the frontend page.
3759         If the 'system' setting is specified, fall back to the system layout
3760         direction as provided by InspectorFrontendHost.
3761
3762         * UserInterface/Base/Setting.js:
3763         Add an application-level setting for (user interface) layout direction.
3764
3765         * UserInterface/Views/SettingsTabContentView.js:
3766         (WebInspector.SettingsTabContentView):
3767         (WebInspector.SettingsTabContentView.prototype.layout):
3768         (WebInspector.SettingsTabContentView.prototype.initialLayout): Deleted.
3769         Make this a normal layout() method so that we can dirty the view
3770         when DebugUI is turned on or off.
3771
3772 2017-02-16  Devin Rousso  <dcrousso+webkit@gmail.com>
3773
3774         Web Inspector: popovers shouldn't be dismissed when Web Inspector window is dragged
3775         https://bugs.webkit.org/show_bug.cgi?id=166935
3776
3777         Reviewed by Joseph Pecoraro.
3778
3779         * UserInterface/Base/Main.js:
3780         (WebInspector.contentLoaded):
3781         (WebInspector._mouseDown): Created.
3782         (WebInspector._dockedResizerMouseDown):
3783         (WebInspector._moveWindowMouseDown):
3784         Applies Popover.EventPreventDismissSymbol whenever a mousedown event is fired for an element
3785         that controls the positioning or size of the WebInspector window.
3786
3787         * UserInterface/Views/Popover.js:
3788         (WebInspector.Popover.prototype._handleEvent):
3789         (WebInspector.Popover.EventPreventDismissSymbol):
3790         Do not dismiss the popover if Popover.EventPreventDismissSymbol is applied to the event.
3791
3792 2017-02-15  Devin Rousso  <dcrousso+webkit@gmail.com>
3793
3794         Web Inspector: Request headers when copied & pasted should follow HTTP format, colon instead of tab
3795         https://bugs.webkit.org/show_bug.cgi?id=168155
3796
3797         Reviewed by Matt Baker.
3798
3799         * UserInterface/Views/DataGrid.js:
3800         (WebInspector.DataGrid):
3801         (WebInspector.DataGrid.prototype.set copyTextDelimiter):
3802         (WebInspector.DataGrid.prototype._copyTextForDataGridNode):
3803         (WebInspector.DataGrid.prototype._copyTextForDataGridHeaders):
3804         * UserInterface/Views/ResourceDetailsSidebarPanel.js:
3805         (WebInspector.ResourceDetailsSidebarPanel.prototype._createNameValueDataGrid):
3806         Allow instances of DataGrid to change the delimiter between items when copying rows.
3807
3808 2017-02-15  Devin Rousso  <dcrousso+webkit@gmail.com>
3809
3810         Web Inspector: Split console should be allowed when docked bottom on Elements/Resources/Debugger/Storage tabs
3811         https://bugs.webkit.org/show_bug.cgi?id=168385
3812
3813         Reviewed by Timothy Hatcher.
3814
3815         * UserInterface/Base/Main.js:
3816         (WebInspector.updateDockedState):
3817         If the new docked configuration does not support the split console, hide it.
3818
3819         * UserInterface/Views/DebuggerTabContentView.js:
3820         (WebInspector.DebuggerTabContentView.prototype.get supportsSplitContentBrowser):
3821         * UserInterface/Views/ElementsTabContentView.js:
3822         (WebInspector.ElementsTabContentView.prototype.get supportsSplitContentBrowser):
3823         * UserInterface/Views/ResourcesTabContentView.js:
3824         (WebInspector.ResourcesTabContentView.prototype.get supportsSplitContentBrowser):
3825         * UserInterface/Views/StorageTabContentView.js:
3826         (WebInspector.StorageTabContentView.prototype.get supportsSplitContentBrowser):
3827
3828 2017-02-14  Brian Burg  <bburg@apple.com>
3829
3830         Web Inspector: RTL: adjust padding of dashboard icons
3831         https://bugs.webkit.org/show_bug.cgi?id=168340
3832
3833         Reviewed by Matt Baker.
3834
3835         Extract the direction-dependent padding into a "local" variable.
3836         Use two rules to apply it to whichever is the leading side.
3837
3838         While we tend to use leading/trailing in Apple layout technologies,
3839         I think the CSS logical properties specification sticks to using
3840         -start and -end, so let's use that nomenclature where we can.
3841
3842         * UserInterface/Views/DefaultDashboardView.css:
3843         (.toolbar .dashboard.default > .item > div):
3844         (body[dir=ltr] .toolbar .dashboard.default > .item > div):