Web Inspector: spring function editor has unusual layout, should have left-aligned...
[WebKit-https.git] / Source / WebInspectorUI / ChangeLog
1 2017-01-11  Devin Rousso  <dcrousso+webkit@gmail.com>
2
3         Web Inspector: spring function editor has unusual layout, should have left-aligned labels and slider tracks
4         https://bugs.webkit.org/show_bug.cgi?id=166933
5
6         Reviewed by Brian Burg.
7
8         * UserInterface/Views/Main.css:
9         (input[type=range]::-webkit-slider-thumb):
10         (input[type=range]::-webkit-slider-runnable-track):
11         (input[type=range]::-webkit-slider-runnable-track::before): Deleted.
12         Fix slider styles.
13
14         * UserInterface/Views/SpringEditor.css:
15         (.spring-editor):
16         (.spring-editor > .spring-preview):
17         (.spring-editor > .spring-timing):
18         (.spring-editor > .number-input-container > .number-input-row > .number-input-row-title):
19         (.spring-editor > .number-input-container > .number-input-row > input):
20         (.spring-editor > .number-input-container > .number-input-row > input::-webkit-inner-spin-button):
21         (.spring-editor > .number-input-container > .number-input-row > input[type="range"]):
22         Decrease spacing and left-align text.
23
24         * UserInterface/Views/SpringEditor.js:
25         (WebInspector.SpringEditor.prototype._handleNumberInputKeydown):
26         (WebInspector.SpringEditor.prototype._changeSpringForInput):
27         Only update editor values when the new value of any input has changed.  This allows users to
28         enter decimal values ("." was being stripped by `parseFloat`).
29
30 2017-01-11  Devin Rousso  <dcrousso+webkit@gmail.com>
31
32         Web Inspector: color, gradient, cubic-bezier, spring editors should be dismissable using ESC
33         https://bugs.webkit.org/show_bug.cgi?id=166934
34
35         Reviewed by Brian Burg.
36
37         * UserInterface/Views/Popover.js:
38         (WebInspector.Popover):
39         (WebInspector.Popover.prototype.dismiss):
40         (WebInspector.Popover.prototype.handleEvent):
41         (WebInspector.Popover.prototype._addListenersIfNeeded):
42         Adds a keydown listener while visible for the Escape key that dismisses the popover.
43
44         * UserInterface/Views/QuickConsole.js:
45         (WebInspector.QuickConsole.prototype.set keyboardShortcutDisabled):
46         Expose the ability to disable the global keyboard shortcut.  This allows the Popover to have
47         its own Escape keyboard shortcut to take precedence.
48
49 2017-01-11  Devin Rousso  <dcrousso+webkit@gmail.com>
50
51         Web Inspector: fix UIString for Print Styles button
52         https://bugs.webkit.org/show_bug.cgi?id=166892
53
54         Reviewed by Brian Burg.
55
56         * Localizations/en.lproj/localizedStrings.js:
57         * UserInterface/Views/DOMTreeContentView.js:
58         (WebInspector.DOMTreeContentView):
59         Changed UIString to better match documentation.
60
61 2017-01-09  Commit Queue  <commit-queue@webkit.org>
62
63         Unreviewed, rolling out r210260.
64         https://bugs.webkit.org/show_bug.cgi?id=166860
65
66         new colorpicker UI doesn't seem to work in trunk,
67         investigating offline (Requested by brrian on #webkit).
68
69         Reverted changeset:
70
71         "Web Inspector: color picker should feature an editable CSS
72         value"
73         https://bugs.webkit.org/show_bug.cgi?id=124356
74         http://trac.webkit.org/changeset/210260
75
76 2017-01-06  Commit Queue  <commit-queue@webkit.org>
77
78         Unreviewed, rolling out r210110.
79         https://bugs.webkit.org/show_bug.cgi?id=166783
80
81         Introduced a regression commenting out individual properties
82         (Requested by JoePeck on #webkit).
83
84         Reverted changeset:
85
86         "Web Inspector: Styles sidebar: Uncommenting CSS rules of
87         pseudo-elements doesn't work"
88         https://bugs.webkit.org/show_bug.cgi?id=165831
89         http://trac.webkit.org/changeset/210110
90
91 2017-01-05  Joseph Pecoraro  <pecoraro@apple.com>
92
93         Web Inspector: Remove unused delegate from VisualStyleSelectorSection
94         https://bugs.webkit.org/show_bug.cgi?id=166744
95
96         Reviewed by Alex Christensen.
97
98         * UserInterface/Views/VisualStyleDetailsPanel.js:
99         (WebInspector.VisualStyleDetailsPanel.prototype.initialLayout):
100         * UserInterface/Views/VisualStyleSelectorSection.js:
101         (WebInspector.VisualStyleSelectorSection):
102
103 2017-01-04  Brian Burg  <bburg@apple.com>
104
105         Web Inspector: Test.html should support globals reportInternalError, reportUnhandledRejection, reportUncaughtException
106         https://bugs.webkit.org/show_bug.cgi?id=161358
107         <rdar://problem/28066446>
108
109         Reviewed by Joseph Pecoraro.
110
111         We have a hodgepodge of redundant code that reports uncaught exceptions in the inspector page.
112         There is better handling of uncaught exceptions in the inspected page, such as including stack traces.
113
114         This patch consolidates a lot of this code and makes it possible to report
115         unhandled promise rejections, top-level uncaught exceptions, and exceptions
116         caught in a try-catch block. The formatting and sanitization code for all of
117         these things is shared and consistent. Finally, some tests have been added to
118         catch regressions in unhandled rejection/uncaught exception reporting.
119
120         * UserInterface/Test/FrontendTestHarness.js:
121         (FrontendTestHarness): Explicitly set initial flag state here so it's easy to find all flags.
122
123         (FrontendTestHarness.prototype.redirectConsoleToTestOutput):
124         Extract this code to sanitize stack frames and put it in TestHarness. It is used
125         by other methods that need to print stack frames.
126
127         (FrontendTestHarness.prototype.reportUnhandledRejection):
128         (FrontendTestHarness.prototype.reportUncaughtException):
129         Added. Sanitize stack trace data so it is deterministic. Log the message to the
130         original window.console but don't exit early. Sometimes the test page is not
131         fully loaded if we throw an exception quite early in the test() method, and there's
132         no harm in not early returning. If we do early return in this case, then a test that
133         uses reportUncaughtException on purpose may not complete because the call to completeTest()
134         would be skipped by returning early.
135
136         (FrontendTestHarness.prototype.reportUncaughtExceptionFromEvent):
137         Renamed from reportUncaughtException since the signature of that method suggests
138         it should have a single exception argument rather than lots of data arguments.
139
140         * UserInterface/Test/Test.js: Add globals.
141
142         * UserInterface/Test/TestHarness.js:
143         (TestHarness): Document class flags.
144         (TestHarness.sanitizeURL):
145         (TestHarness.sanitizeStackFrame):
146         (TestHarness.prototype.sanitizeStack):
147         Extract this code from other parts of the test harness. Make sanitizeStack
148         an instance method so that there is only one place that needs to check the
149         'suppressStackTraces' flag.
150
151         * UserInterface/Test/TestSuite.js:
152         (TestSuite.prototype.logThrownObject):
153         (TestSuite):
154         (AsyncTestSuite.prototype.runTestCases):
155         (AsyncTestSuite):
156         (SyncTestSuite.prototype.runTestCases):
157         (SyncTestSuite):
158         (TestSuite.messageFromThrownObject): Deleted.
159         Inline some helpers with only one use-site and consolidate redundant code
160         for adding an exception and message to the test results.
161
162 2017-01-04  Nikita Vasilyev  <nvasilyev@apple.com>
163
164         Web Inspector: application cache details not shown in Storage Tab
165         https://bugs.webkit.org/show_bug.cgi?id=166699
166         <rdar://problem/29871716>
167
168         Reviewed by Brian Burg.
169
170         Fix a ternary operator precedence. The following expression throws an exception:
171
172             true || false ? i.dont.exist : false
173
174         * UserInterface/Views/ApplicationCacheFrameTreeElement.js:
175         (WebInspector.ApplicationCacheFrameTreeElement.prototype.updateTitles):
176
177 2017-01-03  Brian Burg  <bburg@apple.com>
178
179         Web Inspector: WrappedPromise constructor should behave like the Promise constructor
180         https://bugs.webkit.org/show_bug.cgi?id=166523
181
182         Reviewed by Joseph Pecoraro.
183
184         * UserInterface/Models/WrappedPromise.js:
185         (WebInspector.WrappedPromise):
186         - Return the result of 'work' from the inner promise
187         so WrappedPromise.promise can be chained.
188         - Provide shim resolve, reject callbacks as parameters.
189
190         (WebInspector.WrappedPromise.prototype.get settled): Added.
191         Tells whether we already resolved or rejected the promise.
192
193         (WebInspector.WrappedPromise.prototype.resolve):
194         (WebInspector.WrappedPromise.prototype.reject):
195         Throw an error if already settled and update the flag.
196
197 2017-01-03  Devin Rousso  <dcrousso+webkit@gmail.com>
198
199         Web Inspector: color picker should feature an editable CSS value
200         https://bugs.webkit.org/show_bug.cgi?id=124356
201
202         Reviewed by Brian Burg.
203
204         * UserInterface/Views/ColorPicker.css:
205         (.color-picker):
206         (.color-picker > .color-inputs):
207         (.color-picker > .color-inputs > div):
208         (.color-picker > .color-inputs > div[hidden]):
209         (.color-picker > .color-inputs input):
210
211         * UserInterface/Views/ColorPicker.js:
212         (WebInspector.ColorPicker.createColorInput):
213         (WebInspector.ColorPicker):
214         (WebInspector.ColorPicker.prototype.set color):
215         (WebInspector.ColorPicker.prototype.sliderValueDidChange):
216         (WebInspector.ColorPicker.prototype._updateColor):
217         (WebInspector.ColorPicker.prototype._showColorComponentInputs.updateColorInput):
218         (WebInspector.ColorPicker.prototype._showColorComponentInputs):
219         (WebInspector.ColorPicker.prototype._handleColorInputInput):
220         Add an input element (with a label for the component name and its units) for each component
221         as part of the current color format (e.g. R, G, B, A).  If any of these inputs are changed
222         then the color is also changed and the "ColorChanged" event is fired.
223
224 2017-01-03  Joseph Pecoraro  <pecoraro@apple.com>
225
226         Web Inspector: "Invalid Characters" setting does the opposite of the checkbox
227         https://bugs.webkit.org/show_bug.cgi?id=166664
228
229         Reviewed by Brian Burg.
230
231         * UserInterface/Views/CodeMirrorOverrides.css:
232         (.CodeMirror .cm-invalidchar):
233         (.show-invalid-characters .CodeMirror .cm-invalidchar):
234         Hide invalid characters by default, and show them with the show class.
235
236 2017-01-03  Joseph Pecoraro  <pecoraro@apple.com>
237
238         Web Inspector: Fix Content Flow Container Regions Computed Style section
239         https://bugs.webkit.org/show_bug.cgi?id=166294
240
241         Reviewed by Brian Burg.
242
243         * UserInterface/Controllers/DOMTreeManager.js:
244         (WebInspector.DOMTreeManager.prototype._coerceRemoteArrayOfDOMNodes):
245         (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.domNodeResolved):
246         (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.remoteObjectPropertiesAvailable):
247         (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo):
248         (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.backendFunction.getComputedProperty): Deleted.
249         (WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.backendFunction.getContentFlowName): Deleted.
250         Update this to use Array.from() to convert the NodeList to an Array, and then
251         use the already available RemoteObject's size property instead of getting the
252         "length" property from the Array.
253
254 2017-01-03  Brian Burg  <bburg@apple.com>
255
256         Web Inspector: opening Test.html in a normal browser window doesn't log errors to console
257         https://bugs.webkit.org/show_bug.cgi?id=166570
258
259         Reviewed by Joseph Pecoraro.
260
261         Early syntax errors in the test harness should be logged to the page console since they are easier to
262         debug in a normal browser using Web Inspector. But, the checks to revert to normal console don't work.
263
264         * UserInterface/Test/FrontendTestHarness.js:
265         (FrontendTestHarness.prototype.reportUncaughtException):
266         Add a helper to encapsulate the meaning of checking this._shouldResendResults.
267         This flag is always true until the test page injects its initializers into the
268         inspector page, which will never happen when we view Test.html outside of the test harness.
269
270 2016-12-22  Commit Queue  <commit-queue@webkit.org>
271
272         Unreviewed, rolling out r210069.
273         https://bugs.webkit.org/show_bug.cgi?id=166439
274
275         This patch makes all properties in Computed Styles strike-
276         through when switching from the Rules panel. (Requested by NVI
277         on #webkit).
278
279         Reverted changeset:
280
281         "Web Inspector: Uncommenting CSS properties doesn't work for
282         inline styles"
283         https://bugs.webkit.org/show_bug.cgi?id=166297
284         http://trac.webkit.org/changeset/210069
285
286 2016-12-22  Nikita Vasilyev  <nvasilyev@apple.com>
287
288         Web Inspector: Styles sidebar: Uncommenting CSS rules of pseudo-elements doesn't work
289         https://bugs.webkit.org/show_bug.cgi?id=165831
290         <rdar://problem/29652688>
291
292         Reviewed by Matt Baker.
293
294         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
295         (WebInspector.CSSStyleDeclarationTextEditor.prototype.uncommentAllProperties):
296         Call _resetContent() when toggling all properties to ensure properties have text markers.
297
298         (WebInspector.CSSStyleDeclarationTextEditor.prototype._propertyCommentCheckboxChanged):
299         (WebInspector.CSSStyleDeclarationTextEditor.prototype._uncommentProperty): Added.
300         This method is the opposite of _commentProperty. Introduce it to minimize code duplication.
301
302 2016-12-21  Nikita Vasilyev  <nvasilyev@apple.com>
303
304         Web Inspector: Uncommenting CSS properties doesn't work for inline styles
305         https://bugs.webkit.org/show_bug.cgi?id=166297
306
307         Reviewed by Brian Burg.
308
309         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
310         Update checkboxes for inline styles, too.
311
312 2016-12-20  Matt Baker  <mattbaker@apple.com>
313
314         Web Inspector: Window resize causes TimelineOverview graph elements to be repositioned
315         https://bugs.webkit.org/show_bug.cgi?id=160207
316         <rdar://problem/27553228>
317
318         Reviewed by Brian Burg.
319
320         TimelineRuler does not always update its divider positions when the start
321         time changes while the end time remains the same. The check that determines
322         whether the first or last divider positions have changed before doing a
323         layout uses the ruler end time instead of calculating the last divider's
324         position, and would falsely determine no change was needed.
325
326         * UserInterface/Views/TimelineRuler.js:
327         (WebInspector.TimelineRuler.prototype.set startTime):
328         (WebInspector.TimelineRuler.prototype.set secondsPerPixel):
329         Clear cached divider data on zoom or scroll, forcing dividers to be recalculated.
330         (WebInspector.TimelineRuler.prototype.layout):
331         Calculate accurate divider count and last divider time.
332
333 2016-12-20  Wenson Hsieh  <wenson_hsieh@apple.com>
334
335         Update keyword completions in the inspector for the new scroll snapping CSS properties
336         https://bugs.webkit.org/show_bug.cgi?id=166235
337
338         Reviewed by Joseph Pecoraro.
339
340         The CSS keyword completions for the scroll snapping properties need to be updated for the latest version of the spec.
341
342         * UserInterface/Models/CSSKeywordCompletions.js:
343
344 2016-12-20  Joseph Pecoraro  <pecoraro@apple.com>
345
346         Web Inspector: Console could be made useful for very simple await expressions
347         https://bugs.webkit.org/show_bug.cgi?id=165681
348         <rdar://problem/29755339>
349
350         Reviewed by Brian Burg.
351
352         Normally await expressions are only allowed inside of async functions.
353         They make dealing with async operations easy, but can't be used directly
354         in Web Inspector's console without making your own async function wrapper.
355
356         This change allows simple await expressions to be run in the console.
357         The supported syntaxes are (simple expression with optional assignment):
358
359             await <expr>
360             x = await <expr>
361             let x = await <expr>
362
363         Web Inspector's console will automatically wrap this in an async
364         function and report the resulting value or exception. For instance
365         in the last example above:
366
367             let x;
368             (async function() {
369                 try {
370                     x = await <expr>;
371                     console.info("%o", x);
372                 } catch (e) {
373                     console.error(e);
374                 }
375             })();
376             undefined
377
378         This way users can get the convenience of await in the Console.
379         This also gives users a nice way of extracting a value out of
380         a Promise without writing their own handlers.
381
382         * UserInterface/Controllers/RuntimeManager.js:
383         (WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
384         (WebInspector.RuntimeManager.prototype._tryApplyAwaitConvenience):
385         Wrap simple await expressions into a function that will log the result.
386
387 2016-12-20  Joseph Pecoraro  <pecoraro@apple.com>
388
389         Web Inspector: Update CodeMirror to support async/await keyword and other ES2017 features
390         https://bugs.webkit.org/show_bug.cgi?id=165677
391
392         Rubber-stamped by Brian Burg.
393
394         Update CodeMirror from version 5.5.1 to 5.21.1. Highlights include:
395
396           - Syntax highlighting for ES2017 features (async/await)
397           - Syntax highlighting improvements for some ES6 features (new.target)
398           - Syntax highlighting for CSS4 #rrggbbaa and #rgba colors
399
400         As well as a number of smaller bug fixes.
401
402         Had to add a few semicolons to codemirror.js so that our minifier
403         didn't choke in a few places due to ASI behavior.
404
405         * Scripts/update-codemirror-resources.rb:
406         * UserInterface/External/CodeMirror/LICENSE:
407         * UserInterface/External/CodeMirror/clojure.js:
408         * UserInterface/External/CodeMirror/closebrackets.js:
409         * UserInterface/External/CodeMirror/codemirror.css:
410         * UserInterface/External/CodeMirror/codemirror.js:
411         * UserInterface/External/CodeMirror/coffeescript.js:
412         * UserInterface/External/CodeMirror/comment.js:
413         * UserInterface/External/CodeMirror/css.js:
414         * UserInterface/External/CodeMirror/htmlmixed.js:
415         * UserInterface/External/CodeMirror/javascript.js:
416         * UserInterface/External/CodeMirror/livescript.js:
417         * UserInterface/External/CodeMirror/matchbrackets.js:
418         * UserInterface/External/CodeMirror/overlay.js:
419         * UserInterface/External/CodeMirror/placeholder.js:
420         * UserInterface/External/CodeMirror/runmode.js:
421         * UserInterface/External/CodeMirror/sql.js:
422         * UserInterface/External/CodeMirror/sublime.js:
423         * UserInterface/External/CodeMirror/xml.js:
424
425 2016-12-19  Joseph Pecoraro  <pecoraro@apple.com>
426
427         Web Inspector: Address some assertions and uncaught exceptions seen using Inspector
428         https://bugs.webkit.org/show_bug.cgi?id=166048
429
430         Reviewed by Matt Baker.
431
432         * UserInterface/Controllers/CodeMirrorEditingController.js:
433         (WebInspector.CodeMirrorEditingController.prototype.presentHoverMenu):
434         (WebInspector.CodeMirrorEditingController.prototype.dismissHoverMenu):
435         classList throws an exception when given an empty string. Avoid those cases.
436
437         * UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
438         (WebInspector.CodeMirrorTokenTrackingController.prototype._startTracking):
439         (WebInspector.CodeMirrorTokenTrackingController.prototype._stopTracking):
440         Seen this assert frequently for a while, existing code handles it gracefully.
441
442         * UserInterface/Workers/Formatter/EsprimaFormatter.js:
443         (EsprimaFormatter.prototype._handleTokenAtNode):
444         We correctly handle these tokens but they were not in the list of expected tokens.
445
446 2016-12-16  Joseph Pecoraro  <pecoraro@apple.com>
447
448         JSContext Inspector: Avoid some possible exceptions inspecting a JSContext
449         https://bugs.webkit.org/show_bug.cgi?id=165986
450         <rdar://problem/29551379>
451
452         Reviewed by Matt Baker.
453
454         * UserInterface/Base/Main.js:
455         There will not be a main frame if we are debugging a JSContext.
456         In those cases do not change the title.
457
458         * UserInterface/Views/ResourceSidebarPanel.js:
459         (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
460         There may not be a parent folder in JavaScript inspection. In that case
461         ScriptTreeElements are added to the Top Level, not folders.
462
463 2016-12-16  Matt Baker  <mattbaker@apple.com>
464
465         Web Inspector: REGRESSION (r209882): Opening find banner in editor causes UI to hang
466         https://bugs.webkit.org/show_bug.cgi?id=165967
467
468         Reviewed by Timothy Hatcher.
469
470         * UserInterface/Views/ContentBrowser.js:
471         (WebInspector.ContentBrowser.prototype._findBannerDidShow):
472         Showing the find banner should cause search results to be refreshed only
473         if it contains query text.
474
475 2016-12-16  Matt Baker  <mattbaker@apple.com>
476
477         Web Inspector: Modernize find banner UI
478         https://bugs.webkit.org/show_bug.cgi?id=165939
479
480         Reviewed by Timothy Hatcher.
481
482         The find banner should have a modern appearance, matching Xcode.
483
484         * UserInterface/Views/FindBanner.css:
485         (.find-banner > input[type="search"]):
486         (.find-banner > button):
487         Use standard border colors.
488         (.find-banner > button:disabled > .glyph):
489         Disabled previous / next glyphs should be lighter.
490         (.find-banner > button:active:not(:disabled)):
491         Update depressed button style: flat colors, no text color change.
492         (.find-banner > button.segmented):
493         (.find-banner > button.segmented.left):
494         (.find-banner > button:not(:active).segmented.right:before):
495         (.find-banner > button.segmented.left:active + button.segmented.right,):
496         (.find-banner > button.segmented.left:active + button.segmented.right:before):
497         (.find-banner > button.segmented.right):
498         (.find-banner.console-find-banner > input[type="search"]):
499         (.find-banner.console-find-banner > :matches(input[type="search"], button)):
500         (.find-banner > button:disabled): Deleted.
501         (.find-banner > button.segmented:active): Deleted.
502         Overlapping button borders are no longer an issue.
503
504         * UserInterface/Views/FindBanner.js:
505         (WebInspector.FindBanner):
506         Insert previous / next buttons after the input field in the DOM.
507         (WebInspector.FindBanner.prototype.get delegate):
508         (WebInspector.FindBanner.prototype.set delegate):
509         (WebInspector.FindBanner.prototype.get inputField):
510         (WebInspector.FindBanner.prototype.get searchQuery):
511         (WebInspector.FindBanner.prototype.set searchQuery):
512         (WebInspector.FindBanner.prototype.get numberOfResults):
513         Inline simple getters and setters.
514
515         * UserInterface/Views/Variables.css:
516         (:root):
517         Add button colors.
518
519 2016-12-15  Matt Baker  <mattbaker@apple.com>
520
521         Web Inspector: console search bar jumps, behaves poorly at narrow widths
522         https://bugs.webkit.org/show_bug.cgi?id=164047
523         <rdar://problem/29055582>
524
525         Reviewed by Timothy Hatcher.
526
527         At narrow widths the find banner behaves poorly in the split console
528         toolbar. It should work like the main content browser, appearing below
529         the toolbar when Command-F is pressed and either the split console or
530         quick console prompt has the focus.
531
532         * UserInterface/Base/Main.js:
533         (WebInspector.contentLoaded):
534         Enable split content browser find banner.
535
536         * UserInterface/Views/ContentBrowser.js:
537         (WebInspector.ContentBrowser.prototype.showFindBanner):
538         Check for custom find banner support at runtime.
539         (WebInspector.ContentBrowser.prototype._findBannerDidShow):
540         (WebInspector.ContentBrowser.prototype._findBannerDidHide):
541         Refresh search results when banner is shown/hidden, instead of relying
542         on toggling the "showing-find-banner" class name for everything.
543
544         (WebInspector.ContentBrowser.prototype.handleFindEvent): Deleted.
545         Renamed `showFindBanner`.
546
547         * UserInterface/Views/ContentView.js:
548         (WebInspector.ContentView.prototype.get supportsCustomFindBanner):
549         (WebInspector.ContentView.prototype.showCustomFindBanner):
550         Custom find banner support (used by LogContentView).
551
552         * UserInterface/Views/LogContentView.js:
553         (WebInspector.LogContentView):
554         (WebInspector.LogContentView.prototype.get supportsSearch):
555         (WebInspector.LogContentView.prototype.get numberOfSearchResults):
556         (WebInspector.LogContentView.prototype.get hasPerformedSearch):
557         Cleanup.
558         (WebInspector.LogContentView.prototype.get supportsCustomFindBanner):
559         Use toolbar item find banner when showing Console tab.
560         (WebInspector.LogContentView.prototype.findBannerRevealPreviousResult):
561         (WebInspector.LogContentView.prototype.findBannerRevealNextResult):
562         (WebInspector.LogContentView.prototype._isMessageVisible):
563         (WebInspector.LogContentView.prototype._visibleMessageElements):
564         (WebInspector.LogContentView.prototype._logCleared):
565         (WebInspector.LogContentView.prototype._filterMessageElements):
566         (WebInspector.LogContentView.prototype.findBannerPerformSearch):
567         (WebInspector.LogContentView.prototype.findBannerSearchCleared):
568         (WebInspector.LogContentView.prototype.performSearch):
569         Support both the standard and custom (toolbar item) find banners.
570         (WebInspector.LogContentView.prototype.searchCleared):
571         Refresh search results.
572         (WebInspector.LogContentView.prototype._highlightRanges):
573         Correct spelling: _selectedSearchMathIsValid -> _selectedSearchMatchIsValid.
574         (WebInspector.LogContentView.prototype.get searchInProgress): Deleted.
575         Override ContentView.prototype.hasPerformedSearch instead.
576         (WebInspector.LogContentView.prototype.handleFindEvent): Deleted.
577         Replaced by `showCustomFindBanner`.
578         (WebInspector.LogContentView.prototype.highlightPreviousSearchMatch): Deleted.
579         Absorbed by findBannerRevealPreviousResult.
580         (WebInspector.LogContentView.prototype.highlightNextSearchMatch): Deleted.
581         Absorbed by findBannerRevealNextResult.
582         (WebInspector.LogContentView.prototype._performSearch): Deleted.
583         Override ContentView.prototype.performSearch instead.
584
585         * UserInterface/Views/Main.css:
586         (#split-content-browser > .navigation-bar :matches(.find-banner, .find-banner + .divider)):
587         Hide the toolbar banner and divider.
588
589 2016-12-14  Ryosuke Niwa  <rniwa@webkit.org>
590
591         Web Inspector: Jumping to the definition of a custom elements is broken
592         https://bugs.webkit.org/show_bug.cgi?id=165890
593
594         Reviewed by Joseph Pecoraro.
595
596         Fix the regression from https://trac.webkit.org/changeset/208304.
597
598         * UserInterface/Views/DOMTreeElement.js:
599         (WebInspector.DOMTreeElement.prototype._showCustomElementDefinition): Use the main target
600         since a custom element definition can never come from a worker.
601
602 2016-12-14  Matt Baker  <mattbaker@apple.com>
603
604         Web Inspector: Zooming in on the Timeline should always zoom right where the cursor is
605         https://bugs.webkit.org/show_bug.cgi?id=151118
606         <rdar://problem/23487912>
607
608         Reviewed by Timothy Hatcher.
609
610         Use correct left edge for timeline overview graph elements.
611
612         * UserInterface/Views/TimelineOverview.js:
613         (WebInspector.TimelineOverview.prototype._handleWheelEvent):
614         (WebInspector.TimelineOverview._handleGestureStart):
615         (WebInspector.TimelineOverview.prototype._handleGestureChange):
616
617 2016-12-12  Nikita Vasilyev  <nvasilyev@apple.com>
618
619         [GTK] Web Inspector: Add NavigationItemCodeCoverage.svg icon
620         https://bugs.webkit.org/show_bug.cgi?id=165698
621
622         Reviewed by Joseph Pecoraro.
623
624         * UserInterface/Images/gtk/NavigationItemCodeCoverage.svg: Added.
625         Match in style the existing NavigationItemTypes.svg icon.
626
627 2016-12-12  Matt Baker  <mattbaker@apple.com>
628
629         Web Inspector: Cleanup HierarchicalPathComponent
630         https://bugs.webkit.org/show_bug.cgi?id=165745
631
632         Reviewed by Brian Burg.
633
634         Prefer toggle for style class names, remove single use CSS class name
635         constants, and back all properties by the model not the DOM.
636
637         * UserInterface/Views/HierarchicalPathComponent.js:
638         (WebInspector.HierarchicalPathComponent):
639         (WebInspector.HierarchicalPathComponent.prototype.get element):
640         (WebInspector.HierarchicalPathComponent.prototype.get representedObject):
641         (WebInspector.HierarchicalPathComponent.prototype.get minimumWidth):
642         (WebInspector.HierarchicalPathComponent.prototype.get forcedWidth):
643         (WebInspector.HierarchicalPathComponent.prototype.set forcedWidth):
644         (WebInspector.HierarchicalPathComponent.prototype.get hidden):
645         (WebInspector.HierarchicalPathComponent.prototype.set hidden):
646         (WebInspector.HierarchicalPathComponent.prototype.get collapsed):
647         (WebInspector.HierarchicalPathComponent.prototype.set collapsed):
648         (WebInspector.HierarchicalPathComponent.prototype.get selectorArrows):
649         (WebInspector.HierarchicalPathComponent.prototype.set selectorArrows):
650         (WebInspector.HierarchicalPathComponent.prototype.get previousSibling):
651         (WebInspector.HierarchicalPathComponent.prototype.set previousSibling):
652         (WebInspector.HierarchicalPathComponent.prototype.get nextSibling):
653         (WebInspector.HierarchicalPathComponent.prototype.set nextSibling):
654         (WebInspector.HierarchicalPathComponent.prototype._updateElementTitleAndText):
655         (WebInspector.HierarchicalPathComponent.prototype._updateSelectElement.createOption):
656         (WebInspector.HierarchicalPathComponent.prototype._updateSelectElement):
657
658 2016-12-12  Matt Baker  <mattbaker@apple.com>
659
660         Web Inspector: Allow keyboard navigation in Heap Snapshot data grids
661         https://bugs.webkit.org/show_bug.cgi?id=165752
662
663         Reviewed by Brian Burg.
664
665         * UserInterface/Views/DOMTreeOutline.css:
666         (.tree-outline.dom:focus li.selected > span::after):
667         Use new color variable.
668
669         * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
670         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.get selectable): Deleted.
671         Should be selectable.
672
673         * UserInterface/Views/HeapSnapshotInstancesContentView.css:
674         (.heap-snapshot > .data-grid:focus tr.selected > td .sub-retained):
675         (.heap-snapshot > .data-grid:focus tr.selected .object-id,):
676         (.heap-snapshot > .data-grid:focus tr.selected .formatted-string,):
677         (.heap-snapshot > .data-grid:focus tr.selected td .location):
678         Selected row text should just be white, except for values that are usually
679         gray (object ID, object size, and sub-retained size values). These should
680         be styled like the "= $0" marker in the DOM tree outline.
681
682         (.heap-snapshot > .data-grid:matches(:focus, .force-focus) tr.selected td .location): Deleted.
683         Removed forced-focus reference. Only used by TreeOutlineDataGridSynchronizer.
684
685         * UserInterface/Views/Variables.css:
686         (:root):
687         Added --selected-secondary-text-color.
688
689 2016-12-12  Matt Baker  <mattbaker@apple.com>
690
691         Web Inspector: Breakpoint Log action should support template literals
692         https://bugs.webkit.org/show_bug.cgi?id=165116
693         <rdar://problem/29464765>
694
695         Reviewed by Joseph Pecoraro.
696
697         * Localizations/en.lproj/localizedStrings.js:
698         New string "${expr} = expression" for breakpoint popover.
699
700         * UserInterface/Controllers/BreakpointLogMessageLexer.js: Added.
701         To support template literal placeholders in message text, it is necessary
702         to distinguish plain text parts of the message from placeholders, since
703         plain text must be escaped.
704
705         (WebInspector.BreakpointLogMessageLexer):
706         (WebInspector.BreakpointLogMessageLexer.prototype.tokenize):
707         (WebInspector.BreakpointLogMessageLexer.prototype.reset):
708         (WebInspector.BreakpointLogMessageLexer.prototype._finishPlainText):
709         (WebInspector.BreakpointLogMessageLexer.prototype._finishExpression):
710         (WebInspector.BreakpointLogMessageLexer.prototype._appendToken):
711         (WebInspector.BreakpointLogMessageLexer.prototype._consume):
712         (WebInspector.BreakpointLogMessageLexer.prototype._peek):
713         (WebInspector.BreakpointLogMessageLexer.prototype._expression):
714         (WebInspector.BreakpointLogMessageLexer.prototype._plainText):
715         (WebInspector.BreakpointLogMessageLexer.prototype._possiblePlaceholder):
716         (WebInspector.BreakpointLogMessageLexer.prototype._regExpOrStringLiteral):
717
718         * UserInterface/Controllers/DebuggerManager.js:
719         (WebInspector.DebuggerManager.prototype._debuggerBreakpointOptions):
720         Build breakpoint "options" object for DebuggerAgent. If a Log action
721         contains template literal placeholders it is changed to an Evaluate
722         action, which calls console.log with a template literal.
723
724         (WebInspector.DebuggerManager.prototype._setBreakpoint):
725         Use converted breakpoint options.
726
727         * UserInterface/Main.html:
728         * UserInterface/Test.html:
729         New file.
730
731         * UserInterface/Views/BreakpointActionView.css:
732         (.breakpoint-action-block-body > .description):
733         Styles for breakpoint Log action hint text.
734
735         * UserInterface/Views/BreakpointActionView.js:
736         (WebInspector.BreakpointActionView.prototype._updateBody):
737         Add Log action hint text element.
738
739 2016-12-11  Matt Baker  <mattbaker@apple.com>
740
741         Web Inspector: ThreadTreeElement should have a "Resume" status button when paused
742         https://bugs.webkit.org/show_bug.cgi?id=165581
743
744         Reviewed by Joseph Pecoraro.
745
746         * UserInterface/Images/Resume.svg:
747         Fill/stroke should be unspecified so that both can be styled in CSS.
748
749         * UserInterface/Views/DebuggerDashboardView.css:
750         (.dashboard.debugger .navigation-bar .item.debugger-dashboard-pause.activated):
751         * UserInterface/Views/DebuggerSidebarPanel.css:
752         (.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-pause-resume):
753         (.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-pause-resume.activated):
754         Recreate original style which relied on 'fill="none"' being specified in the SVG.
755
756         * UserInterface/Views/ThreadTreeElement.css:
757         (.tree-outline > .item.thread .icon):
758         (.tree-outline > .item.thread .status-button.resume):
759         (.tree-outline > .item.thread .status-button.resume:active):
760         (.tree-outline:matches(:focus, .force-focus) > .item.thread.selected .status-button.resume):
761         (.tree-outline > .item.thread.selected .status-button.resume,):
762         (.details-section.call-stack .thread .icon): Deleted.
763         Status button styles. Colors match those of the goto-arrow button.
764
765         * UserInterface/Views/ThreadTreeElement.js:
766         (WebInspector.ThreadTreeElement.prototype.refresh):
767         Update status icon.
768         (WebInspector.ThreadTreeElement.prototype.oncontextmenu):
769         (WebInspector.ThreadTreeElement.prototype._updateStatus):
770         Add/remove status button based on paused state.
771         Stop propagation of "mousedown" events on the status button, to
772         prevent button press from selecting the tree element.
773         (WebInspector.ThreadTreeElement):
774
775 2016-12-11  Joseph Pecoraro  <pecoraro@apple.com>
776
777         Web Inspector: Move MainTarget and WorkerTarget to their own files
778         https://bugs.webkit.org/show_bug.cgi?id=165701
779
780         Reviewed by Brian Burg.
781
782         * UserInterface/Controllers/DebuggerManager.js:
783         (WebInspector.DebuggerManager.prototype.scriptDidParse):
784         * UserInterface/Main.html:
785         * UserInterface/Protocol/MainTarget.js: Added.
786         (WebInspector.MainTarget):
787         (WebInspector.MainTarget.prototype.get displayName):
788         (WebInspector.MainTarget.prototype.get mainResource):
789         * UserInterface/Protocol/Target.js:
790         (WebInspector.Target):
791         (WebInspector.MainTarget): Deleted.
792         (WebInspector.MainTarget.prototype.get displayName): Deleted.
793         (WebInspector.MainTarget.prototype.get mainResource): Deleted.
794         (WebInspector.MainTarget.prototype.initialize): Deleted.
795         (WebInspector.WorkerTarget): Deleted.
796         (WebInspector.WorkerTarget.prototype.get displayName): Deleted.
797         (WebInspector.WorkerTarget.prototype.initialize): Deleted.
798         * UserInterface/Protocol/WorkerTarget.js: Added.
799         (WebInspector.WorkerTarget):
800         (WebInspector.WorkerTarget.prototype.get displayName):
801         * UserInterface/Test.html:
802
803 2016-12-09  Joseph Pecoraro  <pecoraro@apple.com>
804
805         Web Inspector: Frontend should not be resetting TypeProfiler state when switching between ContentViews
806         https://bugs.webkit.org/show_bug.cgi?id=165648
807
808         Reviewed by Brian Burg.
809
810         * UserInterface/Base/Main.js:
811         (WebInspector.loaded):
812         Update all backends when the state changes.
813
814         * UserInterface/Views/SourceCodeTextEditor.js:
815         (WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):
816         (WebInspector.SourceCodeTextEditor.prototype.set _basicBlockAnnotatorEnabled):
817         Moved this code to when the global Setting (which affects all editors) changes.
818
819 2016-12-09  Joseph Pecoraro  <pecoraro@apple.com>
820
821         Web Inspector: Some resources fetched via Fetch API do not have data
822         https://bugs.webkit.org/show_bug.cgi?id=165230
823         <rdar://problem/29449220>
824
825         Reviewed by Alex Christensen.
826
827         * Localizations/en.lproj/localizedStrings.js:
828         New "Fetch" and "Fetches" localized strings.
829
830         * UserInterface/Models/Resource.js:
831         (WebInspector.Resource.displayNameForType):
832         * UserInterface/Models/ResourceCollection.js:
833         (WebInspector.ResourceCollection.verifierForType):
834         * UserInterface/Views/CollectionContentView.js:
835         (WebInspector.CollectionContentView):
836         * UserInterface/Views/ResourceClusterContentView.js:
837         (WebInspector.ResourceClusterContentView.prototype.get responseContentView):
838         * UserInterface/Views/ResourceTreeElement.js:
839         (WebInspector.ResourceTreeElement.compareResourceTreeElements):
840         New ResourceType.Fetch. Behave like XHR in most places.
841
842 2016-12-08  Joseph Pecoraro  <pecoraro@apple.com>
843
844         Web Inspector: Unable to delete breakpoint from worker script
845         https://bugs.webkit.org/show_bug.cgi?id=165578
846
847         Reviewed by Matt Baker.
848
849         * UserInterface/Controllers/DebuggerManager.js:
850         (WebInspector.DebuggerManager.prototype._removeBreakpoint):
851         Match setting breakpoints. If this is a "URL breakpoint", affect
852         all targets. If this is a "Script breakpoint", affect just the
853         single target containing that Script.
854
855 2016-12-07  Devin Rousso  <dcrousso+webkit@gmail.com>
856
857         REGRESSION(r203912): Web Inspector: Navigation sidebar widths are not saved
858         https://bugs.webkit.org/show_bug.cgi?id=165496
859
860         Reviewed by Matt Baker.
861
862         * UserInterface/Views/TabBrowser.js:
863         (WebInspector.TabBrowser):
864         (WebInspector.TabBrowser.prototype._sidebarWidthDidChange):
865         (WebInspector.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):
866         (WebInspector.TabBrowser.prototype._sidebarWidthDidChange): Renamed from _detailsSidebarWidthDidChange.
867         Add event listener for when the navigation sidebar's width is changed.
868
869         * UserInterface/Views/TabContentView.js:
870         (WebInspector.TabContentView):
871         (WebInspector.TabContentView.prototype.get navigationSidebarPanel):
872         (WebInspector.TabContentView.prototype.get navigationSidebarCollapsedSetting):
873         (WebInspector.TabContentView.prototype.get navigationSidebarWidthSetting):
874         (WebInspector.TabContentView.prototype.get detailsSidebarPanels):
875         (WebInspector.TabContentView.prototype.get detailsSidebarCollapsedSetting):
876         (WebInspector.TabContentView.prototype.get detailsSidebarSelectedPanelSetting):
877         (WebInspector.TabContentView.prototype.get detailsSidebarWidthSetting):
878         Add WebInspector.Setting object for the navigation sidebar's width.
879
880 2016-12-07  Nikita Vasilyev  <nvasilyev@apple.com>
881
882         Web Inspector: Control Flow Profiler's event handlers aren't getting removed when ContentView closes
883         https://bugs.webkit.org/show_bug.cgi?id=165556
884
885         Reviewed by Joseph Pecoraro.
886
887         * UserInterface/Views/ScriptContentView.js:
888         (WebInspector.ScriptContentView.prototype.closed):
889         * UserInterface/Views/TextResourceContentView.js:
890         (WebInspector.TextResourceContentView.prototype.closed):
891
892 2016-12-07  Joseph Pecoraro  <pecoraro@apple.com>
893
894         Web Inspector: Add ability to distinguish if a Script was parsed as a module
895         https://bugs.webkit.org/show_bug.cgi?id=164900
896         <rdar://problem/29323817>
897
898         Reviewed by Timothy Hatcher.
899
900         * UserInterface/Models/Script.js:
901         (WebInspector.Script.prototype.get sourceType):
902         New property of Scripts. SourceType is either Program or Module.
903
904         * UserInterface/Controllers/DebuggerManager.js:
905         (WebInspector.DebuggerManager.prototype.scriptDidParse):
906         * UserInterface/Protocol/DebuggerObserver.js:
907         (WebInspector.DebuggerObserver.prototype.scriptParsed):
908         Convert incoming module boolean into SourceType when creating new Scripts.
909
910         * UserInterface/Models/ScriptSyntaxTree.js:
911         (WebInspector.ScriptSyntaxTree):
912         (WebInspector.ScriptSyntaxTree.prototype._recurse):
913         (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
914         Update the generic AST for new module specific Esprima types.
915
916         * UserInterface/Views/SourceCodeTextEditor.js:
917         (WebInspector.SourceCodeTextEditor.prototype.textEditorScriptSourceType):
918         * UserInterface/Views/TextEditor.js:
919         (WebInspector.TextEditor.prototype._startWorkerPrettyPrint):
920         For pretty printing correctly state if this is a module or not for Esprima.
921
922 2016-12-07  Joseph Pecoraro  <pecoraro@apple.com>
923
924         Web Inspector: Update Esprima to support new features / syntax (**, async/await, trailing comma)
925         https://bugs.webkit.org/show_bug.cgi?id=164830
926         <rdar://problem/29293814>
927
928         Reviewed by Timothy Hatcher.
929
930         * UserInterface/External/Esprima/LICENSE:
931         * UserInterface/External/Esprima/esprima.js:
932         Updated to Esprima@7219731 (4.0.0-dev).
933
934         * UserInterface/Models/ScriptSyntaxTree.js:
935         (WebInspector.ScriptSyntaxTree.prototype._recurse):
936         (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
937         * UserInterface/Workers/Formatter/ESTreeWalker.js:
938         (ESTreeWalker.prototype._walkChildren):
939         Add new nodes (AwaitExpression).
940         Add new states (async boolean property on Functions).
941         Remove stale properties (defaults is no longer needed, as parameters
942         with default values are now AssignmentPatterns).
943         Update MetaProperty where meta/property are now Identifiers not strings.
944
945         * UserInterface/Workers/Formatter/EsprimaFormatter.js:
946         (EsprimaFormatter.prototype._handleTokenAtNode):
947         Handle pretty printing of new nodes and identifiers.
948
949         * Controllers/FrameResourceManager.js
950         Address a console.assert warning for stripping assertions in Production.
951
952 2016-12-07  Joseph Pecoraro  <pecoraro@apple.com>
953
954         Web Inspector: Remove unused and mostly untested Page domain commands and events
955         https://bugs.webkit.org/show_bug.cgi?id=165507
956
957         Reviewed by Brian Burg.
958
959         * UserInterface/Protocol/PageObserver.js:
960         (WebInspector.PageObserver.prototype.javascriptDialogOpening):
961         (WebInspector.PageObserver.prototype.javascriptDialogClosed):
962         (WebInspector.PageObserver.prototype.scriptsEnabled):
963         Keep stub in case legacy backends dispatch the event to the frontend.
964
965         * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
966         * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
967         * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
968         * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
969         * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
970         * Versions/Inspector-iOS-10.0.json:
971         * Versions/Inspector-iOS-7.0.json:
972         * Versions/Inspector-iOS-8.0.json:
973         * Versions/Inspector-iOS-9.0.json:
974         * Versions/Inspector-iOS-9.3.json:
975         Remove handleJavaScriptDialog command from legacy backends because it
976         doesn't appear as if the iOS backend handled it at all.
977
978 2016-12-06  Alexey Proskuryakov  <ap@apple.com>
979
980         Correct SDKROOT values in xcconfig files
981         https://bugs.webkit.org/show_bug.cgi?id=165487
982         rdar://problem/29539209
983
984         Reviewed by Dan Bernstein.
985
986         Fix suggested by Dan Bernstein.
987
988         * Configurations/DebugRelease.xcconfig:
989
990 2016-12-05  Matt Baker  <mattbaker@apple.com>
991
992         Web Inspector: Object.shallowEqual([{}], [{}]) should return true
993         https://bugs.webkit.org/show_bug.cgi?id=165397
994
995         Reviewed by Brian Burg.
996
997         * UserInterface/Base/Utilities.js:
998         (value):
999         Array.shallowEqual should compare array items using strict equivalence,
1000         and on failure defer to Object.shallowEqual.
1001
1002 2016-12-05  Joseph Pecoraro  <pecoraro@apple.com>
1003
1004         Web Inspector: Remove legacy styles
1005         https://bugs.webkit.org/show_bug.cgi?id=165389
1006
1007         Reviewed by Matt Baker.
1008
1009         Remove styles for platforms we don't build on anymore (Mavericks
1010         and Mountain Lion). There are also no "unknown-mac" styles to
1011         upgrade to a named platform.
1012
1013         * UserInterface/Base/Platform.js:
1014         Add sierra and remove older unsupported platforms.
1015
1016         * UserInterface/Views/Main.css:
1017         (body):
1018         (body:not(.mavericks)): Deleted.
1019         * UserInterface/Views/TabBar.css:
1020         (body.mavericks .tab-bar > .item:not(.disabled).selected): Deleted.
1021         * UserInterface/Views/Toolbar.css:
1022         (body .toolbar):
1023         (body.window-inactive .toolbar):
1024         (body.mac-platform:not(.docked) .toolbar):
1025         (body.mac-platform:not(.docked)):
1026         (body:not(.mavericks) .toolbar,): Deleted.
1027         (body.window-inactive:not(.mavericks) .toolbar): Deleted.
1028         (body.mac-platform:not(.docked, .mavericks) .toolbar): Deleted.
1029         (body.mac-platform:not(.docked, .mavericks)): Deleted.
1030         Remove mavericks specific styles.
1031
1032 2016-12-02  Andy Estes  <aestes@apple.com>
1033
1034         [Cocoa] Adopt the PRODUCT_BUNDLE_IDENTIFIER build setting
1035         https://bugs.webkit.org/show_bug.cgi?id=164492
1036
1037         Reviewed by Dan Bernstein.
1038
1039         * Configurations/WebInspectorUIFramework.xcconfig: Set PRODUCT_BUNDLE_IDENTIFIER to
1040         com.apple.$(PRODUCT_NAME:rfc1034identifier).
1041         * Info.plist: Changed CFBundleIdentifier's value from
1042         com.apple.${PRODUCT_NAME:rfc1034identifier} to ${PRODUCT_BUNDLE_IDENTIFIER}.
1043
1044 2016-12-02  Nikita Vasilyev  <nvasilyev@apple.com>
1045
1046         REGRESSION (r192344): Web Inspector: Turning off Code Coverage or Type Profiler logs an error
1047         https://bugs.webkit.org/show_bug.cgi?id=164804
1048         <rdar://problem/29278028>
1049
1050         Reviewed by Matt Baker.
1051
1052         BasicBlockAnnotator and TypeTokenAnnotator were instanciated for a resource in an inactive Debugger tab.
1053
1054         * UserInterface/Views/NavigationSidebarPanel.js:
1055         (WebInspector.NavigationSidebarPanel.prototype.showDefaultContentViewForTreeElement):
1056         Don't show any content view if we are not in a selected tab.
1057
1058 2016-12-01  Matt Baker  <mattbaker@apple.com>
1059
1060         Web Inspector: Show async stack traces for workers
1061         https://bugs.webkit.org/show_bug.cgi?id=165235
1062         <rdar://problem/29450172>
1063
1064         Reviewed by Joseph Pecoraro.
1065
1066         * UserInterface/Views/CallFrameTreeElement.css:
1067         (.tree-outline > .children > .item.call-frame.async-boundary):
1068         (.tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary):
1069         (.tree-outline .item.call-frame.async-boundary::before):
1070         (.tree-outline.single-thread .item.call-frame.async-boundary::before):
1071         (.tree-outline .item.call-frame.async-boundary): Deleted.
1072         Style changes for single/multiple-thread call stacks.
1073         Padding changes to account for Thread tree element.
1074         Make selectors more specific where needed.
1075
1076         * UserInterface/Views/DebuggerSidebarPanel.css:
1077         (.sidebar > .panel.navigation.debugger .tree-outline.single-thread > .item.thread):
1078         (.sidebar > .panel.navigation.debugger .tree-outline.single-thread):
1079         Style changes for single/multiple-thread call stacks.
1080
1081         * UserInterface/Views/DebuggerSidebarPanel.js:
1082         (WebInspector.DebuggerSidebarPanel):
1083         Use a single tree outline for showing a single thread or multiple threads.
1084         For single-threaded, hide Thread tree element and un-indent children.
1085
1086         (WebInspector.DebuggerSidebarPanel.prototype._targetAdded):
1087         (WebInspector.DebuggerSidebarPanel.prototype._targetRemoved):
1088         (WebInspector.DebuggerSidebarPanel.prototype._updateCallStackTreeOutline):
1089         Update tree style and whether Thread tree element is selectable.
1090         (WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
1091         Remove support for second tree outline.
1092
1093         (WebInspector.DebuggerSidebarPanel.prototype._updateSingleThreadCallStacks): Deleted.
1094         (WebInspector.DebuggerSidebarPanel.prototype._selectActiveCallFrameTreeElement): Deleted.
1095         (WebInspector.DebuggerSidebarPanel.prototype._showSingleThreadCallStacks): Deleted.
1096         (WebInspector.DebuggerSidebarPanel.prototype._showMultipleThreadCallStacks): Deleted.
1097         No longer needed after unifying tree outlines.
1098
1099         * UserInterface/Views/ThreadTreeElement.js:
1100         (WebInspector.ThreadTreeElement.prototype.refresh):
1101         Append call frames from the async stack trace.
1102
1103 2016-11-30  Joseph Pecoraro  <pecoraro@apple.com>
1104
1105         Web Inspector: Clicking on link in Web Inspector can cause UIProcess to crash
1106         https://bugs.webkit.org/show_bug.cgi?id=165157
1107         <rdar://problem/27896562>
1108
1109         Reviewed by Brian Burg.
1110
1111         By correctly disallowing slashes in the scheme Web Inspector resolves
1112         the correct absolute URL and doesn't end up trying to navigate to an
1113         incorrect file URL.
1114
1115         * UserInterface/Base/URLUtilities.js:
1116         (parseURL):
1117         Disallow "/" characters in the scheme portion. (/http://example.com)
1118         Allow path to be optional before a fragment portion. (http://example.com#frag)
1119
1120 2016-11-29  Joseph Pecoraro  <pecoraro@apple.com>
1121
1122         Web Inspector: Improve name sorting in HeapSnapshot data grids
1123         https://bugs.webkit.org/show_bug.cgi?id=165170
1124         <rdar://problem/28784421>
1125
1126         Reviewed by Matt Baker.
1127
1128         When sorting the Name column, group named properties and unnamed
1129         properties and sort them each individually:
1130
1131           - Sort named properties by their property name (property names will be unique if they exist)
1132           - Sort unnamed properties by their class name (guaranteed)
1133           - Sort any tied class names by their object id
1134
1135         This makes using the Object Graph with Name sort easier to follow.
1136         In the ascending sort you see all the named properties first,
1137         followed by the unnamed (internal) properties.
1138
1139         * UserInterface/Views/HeapSnapshotContentView.js:
1140         (WebInspector.HeapSnapshotObjectGraphContentView):
1141         Since this data grid column now sorts on more than just the "Class Name"
1142         rename it to "Name".
1143
1144         * UserInterface/Views/HeapSnapshotDataGridTree.js:
1145         (WebInspector.HeapSnapshotDataGridTree.buildSortComparator):
1146         Make the sort of the `className` column more general to handle sorting
1147         by property names, class names, and object identifiers.
1148
1149         * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
1150         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.get propertyName):
1151         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
1152         Provide a lazy `propertyName` accessor where we compute it once and stash
1153         it on the DataGridNode to avoid extra work when resorting.
1154
1155         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populate.propertyName):
1156         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populate):
1157         In the initial populated sort, provide the necessary property name property
1158         the sort comparator expects.
1159
1160 2016-11-29  Matt Baker  <mattbaker@apple.com>
1161
1162         Web Inspector: Breakpoints button enabled state is too subtle
1163         https://bugs.webkit.org/show_bug.cgi?id=165153
1164
1165         Reviewed by Joseph Pecoraro.
1166
1167         * UserInterface/Images/Breakpoints.svg:
1168         Change to path so stroke and fill can be styled.
1169
1170         * UserInterface/Views/DebuggerSidebarPanel.css:
1171         (.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-breakpoints):
1172         (.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-breakpoints.activated):
1173         Fill and stroke styles for the active and inactive breakpoint button.
1174
1175 2016-11-28  Matt Baker  <mattbaker@apple.com>
1176
1177         Web Inspector: Debugger should have an option for showing asynchronous call stacks
1178         https://bugs.webkit.org/show_bug.cgi?id=163230
1179         <rdar://problem/28698683>
1180
1181         Reviewed by Joseph Pecoraro.
1182
1183         * Localizations/en.lproj/localizedStrings.js:
1184         New string for generic async call stack boundary label: "(async)".
1185
1186         * UserInterface/Controllers/DebuggerManager.js:
1187         Create async stack depth setting and set default depth.
1188         (WebInspector.DebuggerManager.prototype.get asyncStackTraceDepth):
1189         (WebInspector.DebuggerManager.prototype.set asyncStackTraceDepth):
1190         Make async stack depth setting accessible to the frontend.
1191         (WebInspector.DebuggerManager.prototype.initializeTarget):
1192         Set async stack depth value on the target.
1193         (WebInspector.DebuggerManager.prototype.debuggerDidPause):
1194         Plumbing for the async stack trace payload.
1195
1196         * UserInterface/Models/ConsoleMessage.js:
1197         (WebInspector.ConsoleMessage):
1198         Updated for new StackTrace.fromPayload use.
1199
1200         * UserInterface/Models/DebuggerData.js:
1201         (WebInspector.DebuggerData):
1202         (WebInspector.DebuggerData.prototype.get asyncStackTrace):
1203         (WebInspector.DebuggerData.prototype.updateForPause):
1204         (WebInspector.DebuggerData.prototype.updateForResume):
1205         More plumbing.
1206
1207         * UserInterface/Models/StackTrace.js:
1208         Update frontend model for use as new protocol object Console.StackTrace,
1209         which was previously an alias for a simple array of Console.CallFrames.
1210
1211         (WebInspector.StackTrace):
1212         (WebInspector.StackTrace.fromPayload):
1213         (WebInspector.StackTrace.fromString):
1214         (WebInspector.StackTrace.prototype.get topCallFrameIsBoundary):
1215         (WebInspector.StackTrace.prototype.get parentStackTrace):
1216
1217         * UserInterface/Protocol/DebuggerObserver.js:
1218         (WebInspector.DebuggerObserver.prototype.paused):
1219         More plumbing.
1220
1221         * UserInterface/Views/CallFrameTreeElement.css:
1222         (.tree-outline .item.call-frame.async-boundary):
1223         Use default cursor since boundary element is not selectable.
1224         (.tree-outline .item.call-frame.async-boundary .icon):
1225         (.tree-outline .item.call-frame.async-boundary::before,):
1226         (.tree-outline .item.call-frame.async-boundary::after):
1227         (.tree-outline .item.call-frame.async-boundary::before):
1228         Dimmed text and divider line styles for boundary element.
1229
1230         * UserInterface/Views/CallFrameTreeElement.js:
1231         (WebInspector.CallFrameTreeElement):
1232         Add a flag denoting whether the call frame is an async call trace
1233         boundary, and set styles accordingly.
1234
1235         * UserInterface/Views/DebuggerSidebarPanel.js:
1236         Set async stack trace depth, if supported.
1237         (WebInspector.DebuggerSidebarPanel.prototype._updateSingleThreadCallStacks):
1238         Add call frames for async stack traces to the call stack TreeOutline.
1239         (WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
1240         Ensure that async call frames cannot become the active call frame.
1241
1242         * UserInterface/Views/Variables.css:
1243         (:root):
1244         Add --text-color-gray-medium, for dimmed text in async boundary element.
1245
1246 2016-11-18  Matt Baker  <mattbaker@apple.com>
1247
1248         Web Inspector: TimelineDataGridNode assertions when refreshing page
1249         https://bugs.webkit.org/show_bug.cgi?id=162642
1250         <rdar://problem/28505898>
1251
1252         Reviewed by Timothy Hatcher.
1253
1254         This patch fixes a number of deficiencies in the Network tab that caused
1255         TimelineDataGridNode graphs to refresh before the tab became visible.
1256
1257         * UserInterface/Views/ElementsTabContentView.js:
1258         (WebInspector.ElementsTabContentView):
1259         (WebInspector.ElementsTabContentView.prototype.shown):
1260         Drive-by fix: defer showing the DOM content view until the tab is shown.
1261
1262         * UserInterface/Views/NetworkGridContentView.js:
1263         (WebInspector.NetworkGridContentView):
1264         Drive-by event listener cleanup.
1265         (WebInspector.NetworkGridContentView.prototype.get startTime):
1266         (WebInspector.NetworkGridContentView.prototype.get endTime):
1267         Back endTime with a variable, instead of using the ruler value which
1268         isn't valid before the tab is shown for the first time.
1269
1270         (WebInspector.NetworkGridContentView.prototype.shown):
1271         Force the grid to update its layout, and that of the Timeline column ruler.
1272         During layout the ruler's secondsPerPixel value is used, which isn't
1273         valid until the ruler does an initial layout.
1274
1275         (WebInspector.NetworkGridContentView.prototype.reset):
1276         Clear pending records. This was causing duplicates to appear when the
1277         inspected page was refreshed multiple times prior to showing the Network
1278         tab for the first time.
1279
1280         (WebInspector.NetworkGridContentView.prototype.layout):
1281         Should more closely match behavior in NetworkTimelineView.prototype.layout.
1282         Graph end time padding is added if no longer updating the current time.
1283
1284         (WebInspector.NetworkGridContentView.prototype._networkTimelineRecordAdded):
1285         Track endTime of the last record added, so that the graph end time can
1286         be padded once the current time is no longer being updated.
1287
1288         (WebInspector.NetworkGridContentView.prototype._update):
1289         (WebInspector.NetworkGridContentView.prototype._stopUpdatingCurrentTime):
1290         Graph end time padding shouldn't be applied here, since this isn't called
1291         if the inspected page finishes loading before the view is shown.
1292
1293         (WebInspector.NetworkGridContentView.prototype._clearNetworkItems): Deleted.
1294         Replaced by an arrow function.
1295
1296         * UserInterface/Views/NetworkSidebarPanel.js:
1297         (WebInspector.NetworkSidebarPanel.prototype._networkTimelineReset):
1298         Don't show the content view if the tab is hidden.
1299
1300 2016-11-17  Devin Rousso  <dcrousso+webkit@gmail.com>
1301
1302         Web Inspector: Shift clicking on named color value only shows its hex form
1303         https://bugs.webkit.org/show_bug.cgi?id=162758
1304
1305         Reviewed by Timothy Hatcher.
1306
1307         * UserInterface/Models/Color.js:
1308         (WebInspector.Color.prototype.nextFormat):
1309         Reworked the logic for the formatting order to be the following:
1310          - Long HEX and Long HEXAlpha
1311          - RGB and RGBA
1312          - HSL and HSLA
1313          - Keyword (if applicable)
1314          - Short HEX (if applicable)
1315          - Short HEXAlpha (if applicable)
1316         It will only show formats with alpha values if the color value has an alpha that is not 1.
1317         If the alpha is not 1, it will not show formats with non-alpha values.
1318
1319         The changes to this function have no effect on the context menu items of InlineSwatch
1320         elements.  The purpose of each of those items is to allow the user to change the format to
1321         a specified type, whereas WebInspector.Color.prototype.nextFormat is used to cycle through
1322         all of the relevant formats.
1323
1324         (WebInspector.Color.prototype._toRGBString):
1325         (WebInspector.Color.prototype._toRGBAString):
1326         (WebInspector.Color.prototype._toHSLString):
1327         (WebInspector.Color.prototype._toHSLAString):
1328         Unrelated fix of extra decimals when converting from HEX to RGB and HSL.
1329
1330         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
1331         (WebInspector.CSSStyleDeclarationTextEditor._inlineSwatchValueChanged):
1332         Removed assertion for `_hasActiveInlineSwatchEditor` since the value may change from
1333         switching the format of a color swatch (Shift-Click).
1334
1335 2016-11-16  Joseph Pecoraro  <pecoraro@apple.com>
1336
1337         Web Inspector: Background tabs are often updating non-stop because they think they are visible
1338         https://bugs.webkit.org/show_bug.cgi?id=164841
1339         <rdar://problem/29298658>
1340
1341         Reviewed by Matt Baker.
1342
1343         * UserInterface/Views/NetworkGridContentView.js:
1344         (WebInspector.NetworkGridContentView.prototype._networkTimelineRecordAdded):
1345         * UserInterface/Views/TimelineRecordingContentView.js:
1346         (WebInspector.TimelineRecordingContentView.prototype._update):
1347         Don't constantly update when this tab is not in the foreground.
1348
1349 2016-11-15  Joseph Pecoraro  <pecoraro@apple.com>
1350
1351         Web Inspector: SourceCodeTextEditor should display execution lines for background threads
1352         https://bugs.webkit.org/show_bug.cgi?id=164679
1353         <rdar://problem/29233026>
1354
1355         Reviewed by Timothy Hatcher.
1356
1357         There may be multiple threads paused in the same content view. With
1358         this change we should a thread indicator for each primary line a
1359         thread is paused on. It uses the same inline line indicator that
1360         inline errors/warnings (issues) use.
1361
1362         When there is a single thread (just the Page) we don't show thread
1363         indicators. But as soon as there are multiple threads we start
1364         managing and showing them. The line indicator contains the name of
1365         the thread on the side.
1366
1367         Note that SourceCodeTextEditor maintains the thread indicators, but
1368         it still always handles the ActiveCallFrame as it used to, pushing
1369         values down into TextEditor. The ActiveCallFrame styles override
1370         the thread line indicators (albeit with the same styles). The reason
1371         these are still separate is that TextEditor has some special styles
1372         regarding its gutter for the active execution line. Eventually we
1373         may want to find a way to push this up into SourceCodeTextEditor.
1374
1375         * Localizations/en.lproj/localizedStrings.js:
1376         New string "%d Threads" when multiple threads are on the same line.
1377
1378         * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
1379         (WebInspector.ScopeChainDetailsSidebarPanel):
1380         (WebInspector.ScopeChainDetailsSidebarPanel.prototype._activeCallFrameDidChange):
1381         Update Watch Expressions when the active call frame changes.
1382
1383         * UserInterface/Views/SourceCodeTextEditor.css:
1384         (.source-code.text-editor > .CodeMirror .line-indicator-widget):
1385         (.source-code.text-editor > .CodeMirror .line-indicator-widget.inline):
1386         (.source-code.text-editor > .CodeMirror .line-indicator-widget > .arrow):
1387         (.source-code.text-editor > .CodeMirror .line-indicator-widget.inline > .arrow):
1388         (.source-code.text-editor > .CodeMirror .line-indicator-widget > .icon):
1389         (.source-code.text-editor > .CodeMirror .line-indicator-widget > .text):
1390         (.source-code.text-editor > .CodeMirror .line-indicator-widget.inline > .text):
1391         Share line indicator widget styles between issue widgets and thread widgets.
1392
1393         (.source-code.text-editor > .CodeMirror .thread-indicator):
1394         (.source-code.text-editor > .CodeMirror .thread-widget):
1395         (.source-code.text-editor > .CodeMirror .thread-widget.inline):
1396         (.source-code.text-editor > .CodeMirror .thread-widget.inline > .arrow):
1397         Colors for the thread-widget line-indicators.
1398
1399         * UserInterface/Views/SourceCodeTextEditor.js:
1400         (WebInspector.SourceCodeTextEditor):
1401         (WebInspector.SourceCodeTextEditor.prototype.close):
1402         New event listeners handling for Target added / removed events.
1403
1404         (WebInspector.SourceCodeTextEditor.prototype._targetAdded):
1405         (WebInspector.SourceCodeTextEditor.prototype._targetRemoved):
1406         Update thread indicators as needed.
1407
1408         (WebInspector.SourceCodeTextEditor.prototype._looselyMatchesSourceCodeLocation):
1409         More generic match based just on the URLs. Even if the exact script comes
1410         from a different target, if they share the same URL that is fine.
1411
1412         (WebInspector.SourceCodeTextEditor.prototype._callFramesDidChange):
1413         (WebInspector.SourceCodeTextEditor.prototype._addThreadIndicatorForTarget):
1414         (WebInspector.SourceCodeTextEditor.prototype._removeThreadIndicatorForTarget):
1415         (WebInspector.SourceCodeTextEditor.prototype._threadIndicatorWidgetForLine):
1416         (WebInspector.SourceCodeTextEditor.prototype._updateThreadIndicatorWidget):
1417         (WebInspector.SourceCodeTextEditor.prototype._handleThreadIndicatorWidgetClick):
1418         Manage thread line indicator widgets. There are 3 maps we maintain.
1419
1420           1. line -> [threads]
1421               List of threads paused on a line, needed for the UI text.
1422           2. line -> widget
1423               Gets the widget on a line so we can modify and eventually remove it.
1424           3. target -> line
1425               If a target is removed, we need to know what line it had an indicator on.
1426
1427         (WebInspector.SourceCodeTextEditor.prototype._isWidgetToggleable):
1428         Generalize for all of our different line indicator widgets.
1429
1430         (WebInspector.SourceCodeTextEditor.prototype._contentDidPopulate):
1431         (WebInspector.SourceCodeTextEditor.prototype.textEditorUpdatedFormatting):        
1432         (WebInspector.SourceCodeTextEditor.prototype._reinsertAllThreadIndicators):
1433         When first populated, or reformatted, clear and reinsert all widgets.
1434
1435         (WebInspector.SourceCodeTextEditor.prototype._reinsertAllIssues):
1436         (WebInspector.SourceCodeTextEditor.prototype._logCleared):
1437         (WebInspector.SourceCodeTextEditor.prototype._clearIssueWidgets): Renamed.
1438         Rename _clearWidgets to _clearIssueWidgets.
1439
1440 2016-11-15  Joseph Pecoraro  <pecoraro@apple.com>
1441
1442         Web Inspector: Remove unused and untested Page.setTouchEmulationEnabled command
1443         https://bugs.webkit.org/show_bug.cgi?id=164793
1444
1445         Reviewed by Timothy Hatcher.
1446
1447         * Localizations/en.lproj/localizedStrings.js:
1448         Tooltips for new button.
1449
1450         * UserInterface/Base/Main.js:
1451         (WebInspector.loaded):
1452         New global setting.
1453
1454         * UserInterface/Views/DOMTreeContentView.js:
1455         (WebInspector.DOMTreeContentView):
1456         (WebInspector.DOMTreeContentView.prototype.get navigationItems):
1457         (WebInspector.DOMTreeContentView.prototype._showPrintStylesSettingChanged):
1458         (WebInspector.DOMTreeContentView.prototype._togglePrintStylesSetting):
1459         New navigation bar button to toggle print styles.
1460
1461         * UserInterface/Controllers/CSSStyleManager.js:
1462         (WebInspector.CSSStyleManager.prototype.mediaTypeChanged):
1463         After toggling styles we will need to refresh styles, so provide
1464         a meaningful way to trigger refreshing styles from the frontend.
1465
1466         * UserInterface/Images/Printer.svg: Added.
1467         * UserInterface/Images/gtk/Printer.svg: Added.
1468         New Printer icon for enabling / disabling print styles.
1469
1470         * UserInterface/Images/gtk/Crosshair.svg:
1471         * UserInterface/Images/gtk/LayerBorders.svg:
1472         * UserInterface/Images/gtk/NavigationItemCurleyBraces.svg:
1473         * UserInterface/Images/gtk/NavigationItemTypes.svg:
1474         * UserInterface/Images/gtk/PaintFlashing.svg:
1475         * UserInterface/Images/gtk/ShadowDOM.svg:
1476         * UserInterface/Images/gtk/ToggleLeftSidebar.svg:
1477         * UserInterface/Images/gtk/ToggleRightSidebar.svg:
1478         * UserInterface/Images/gtk/UpDownArrows.svg:
1479         Fix a number of existing GTK images to have activated styles.
1480
1481 2016-11-15  Nikita Vasilyev  <nvasilyev@apple.com>
1482
1483         REGRESSION (r208248): Web Inspector: Pressing Left Arrow breaks autocomplete
1484         https://bugs.webkit.org/show_bug.cgi?id=164391
1485         <rdar://problem/29102408>
1486
1487         Reviewed by Matt Baker.
1488
1489         Unroll r208248.
1490
1491         * UserInterface/Controllers/CodeMirrorCompletionController.js:
1492         (WebInspector.CodeMirrorCompletionController):
1493         (WebInspector.CodeMirrorCompletionController.prototype.updateCompletions):
1494         (WebInspector.CodeMirrorCompletionController.prototype.isCompletionChange):
1495         (WebInspector.CodeMirrorCompletionController.prototype.hideCompletions):
1496         (WebInspector.CodeMirrorCompletionController.prototype.close):
1497         (WebInspector.CodeMirrorCompletionController.prototype.completionSuggestionsSelectedCompletion):
1498         (WebInspector.CodeMirrorCompletionController.prototype._createCompletionHintMarker):
1499         (WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint.update):
1500         (WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint):
1501         (WebInspector.CodeMirrorCompletionController.prototype._commitCompletionHint.update):
1502         (WebInspector.CodeMirrorCompletionController.prototype._commitCompletionHint):
1503         (WebInspector.CodeMirrorCompletionController.prototype._removeLastChangeFromHistory):
1504         (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.clearMarker):
1505         (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.update):
1506         (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint):
1507         (WebInspector.CodeMirrorCompletionController.prototype._completeAtCurrentPosition):
1508         (WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions):
1509
1510 2016-11-15  Joseph Pecoraro  <pecoraro@apple.com>
1511
1512         Web Inspector: Remove unused and untested Page.setTouchEmulationEnabled command
1513         https://bugs.webkit.org/show_bug.cgi?id=164793
1514
1515         Reviewed by Matt Baker.
1516
1517         * UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
1518         * UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
1519         * UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
1520         * UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
1521         * UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
1522         * Versions/Inspector-iOS-10.0.json:
1523         * Versions/Inspector-iOS-7.0.json:
1524         * Versions/Inspector-iOS-8.0.json:
1525         * Versions/Inspector-iOS-9.0.json:
1526         * Versions/Inspector-iOS-9.3.json:
1527
1528 2016-11-15  Joseph Pecoraro  <pecoraro@apple.com>
1529
1530         Web Inspector: URL Breakpoints that resolve in multiple workers should only appear in the UI once
1531         https://bugs.webkit.org/show_bug.cgi?id=164334
1532         <rdar://problem/29073523>
1533
1534         Reviewed by Matt Baker.
1535
1536         * UserInterface/Views/DebuggerSidebarPanel.js:
1537         (WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint):
1538         Don't add a duplicate BreakpointTreeElements for the same Breakpoint.
1539
1540 2016-11-14  Joseph Pecoraro  <pecoraro@apple.com>
1541
1542         Web Inspector: Worker debugging should pause all targets and view call frames in all targets
1543         https://bugs.webkit.org/show_bug.cgi?id=164305
1544         <rdar://problem/29056192>
1545
1546         Reviewed by Timothy Hatcher.
1547
1548         This implements a policy where, when one Target ("Thread") pauses
1549         the frontend triggers a pause in all other Targets. The intended
1550         user experience is "all threads pause" whenever the frontend shows
1551         the debugger paused UI.
1552
1553         DebuggerManager has a few straight forward changes:
1554
1555             - The paused state reflects if any target is paused.
1556             - The Paused Event is fired when going from !paused -> paused.
1557               This means when the first target pauses.
1558             - The Resumed Event is fired when going from paused -> !paused.
1559               This means only after all targets have resumed.
1560             - The CallFrameDidChange Event now includes the Target that updated.
1561
1562         When a Target first pauses the frontend then immediately pauses all
1563         other Targets. This puts them into a "pausing" state (we display as
1564         Idle) and they will pause as soon as they start executing JavaScript.
1565
1566         When a Target steps the "paused" state isn't changing. So this is
1567         just a CallFramesDidChange update.
1568
1569         When clicking Resume we resume all targets. This is will be the normal,
1570         expected way users resume execution. Note that one of the threads may
1571         then hit a breakpoint and re-pause all threads.
1572
1573         Sometimes when multiple threads are paused you may want to run an
1574         individual thread to completion but keep other threads paused. There
1575         is a context menu on the ThreadTreeElement to resume just that
1576         single thread. It will continue and pause for its next run loop.
1577
1578         * Localizations/en.lproj/localizedStrings.js:
1579         * UserInterface/Images/Thread.svg: Added.
1580         * UserInterface/Images/gtk/Thread.svg: Added.
1581         * UserInterface/Main.html:
1582         New strings and files.
1583
1584         * UserInterface/Base/Main.js:
1585         (WebInspector.loaded):
1586         * UserInterface/Test/Test.js:
1587         (WebInspector.loaded):
1588         Place the TargetManager first since other managers may want to listen
1589         for TargetAdded / TargetRemoved events.
1590
1591         * UserInterface/Controllers/DebuggerManager.js:
1592         (WebInspector.DebuggerManager.prototype.get paused):
1593         This is now a computed state.
1594
1595         (WebInspector.DebuggerManager.prototype.pause):
1596         (WebInspector.DebuggerManager.prototype.resume):
1597         Affect all targets.
1598
1599         (WebInspector.DebuggerManager.prototype.stepOver):
1600         (WebInspector.DebuggerManager.prototype.stepInto):
1601         (WebInspector.DebuggerManager.prototype.stepOut):
1602         (WebInspector.DebuggerManager.prototype.reset):
1603         Update to use the paused computed property.
1604
1605         (WebInspector.DebuggerManager.prototype.continueUntilNextRunLoop):
1606         Issue the new Debugger.continueUntilNextRunLoop command
1607         on a given target.
1608
1609         (WebInspector.DebuggerManager.prototype.initializeTarget):
1610         When a new Target is created and we were already paused,
1611         then start that Worker in a paused state.
1612
1613         (WebInspector.DebuggerManager.prototype.debuggerDidPause):
1614         Recover from bad cases where the backend informs the frontend about
1615         internal JavaScript that it shouldn't know about. Legacy backend do
1616         this but also there are corner cases we need to handle.
1617         Dispatch events appropriately now that multiple targets may be paused.
1618
1619         (WebInspector.DebuggerManager.prototype._didResumeInternal):
1620         Dispatch events appropriately now that multiple targets may be paused.
1621
1622         (WebInspector.DebuggerManager.prototype._targetRemoved):
1623         Remove debugger data for targets that go away to avoid leaks.
1624
1625         * UserInterface/Models/DebuggerData.js:
1626         (WebInspector.DebuggerData):
1627         (WebInspector.DebuggerData.prototype.get paused):
1628         (WebInspector.DebuggerData.prototype.get pausing):
1629         Move some more per-Target state into DebuggerData.
1630
1631         (WebInspector.DebuggerData.prototype.pauseIfNeeded):
1632         (WebInspector.DebuggerData.prototype.resumeIfNeeded):
1633         (WebInspector.DebuggerData.prototype.continueUntilNextRunLoop):
1634         These should only be called by DebuggerManager. They correctly
1635         update the state of the DebuggerData for this Target, and also
1636         issue the underlying command to the target.
1637
1638         (WebInspector.DebuggerData.prototype.updateForPause):
1639         (WebInspector.DebuggerData.prototype.updateForResume):
1640         Handle a special case where continueUntilNextRunLoop triggers
1641         an invisible "pause" on the backend that we should mirror.
1642
1643         * UserInterface/Protocol/Target.js:
1644         (WebInspector.MainTarget):
1645         (WebInspector.MainTarget.prototype.get displayName):
1646         (WebInspector.MainTarget.prototype.initialize):
1647         Better display names.
1648
1649         * UserInterface/Views/DebuggerSidebarPanel.js:
1650         (WebInspector.DebuggerSidebarPanel):
1651         (WebInspector.DebuggerSidebarPanel.prototype._debuggerDidPause):
1652         (WebInspector.DebuggerSidebarPanel.prototype._debuggerDidResume):
1653         (WebInspector.DebuggerSidebarPanel.prototype._updateSingleThreadCallStacks):
1654         (WebInspector.DebuggerSidebarPanel.prototype._selectActiveCallFrameTreeElement):
1655         (WebInspector.DebuggerSidebarPanel.prototype._showSingleThreadCallStacks):
1656         (WebInspector.DebuggerSidebarPanel.prototype._showMultipleThreadCallStacks):
1657         (WebInspector.DebuggerSidebarPanel.prototype._findThreadTreeElementForTarget):
1658         (WebInspector.DebuggerSidebarPanel.prototype._targetAdded):
1659         (WebInspector.DebuggerSidebarPanel.prototype._targetRemoved):
1660         (WebInspector.DebuggerSidebarPanel.prototype._debuggerCallFramesDidChange):
1661         (WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
1662         The DebuggerSidebar still has a single "Call Stacks" section, but maintains
1663         two TreeOutlines and only shows one at a time. The Single Thread view shows
1664         a flat list of the call frames for the Main Target when it is the only target.
1665         The Multiple Threads view shows a list of Threads and their call frames.
1666         We always keep both up to date, because we may need to swap between them
1667         purely as Targets are added / removed. There is a bit of extra logic to
1668         ensure we select elements properly based only on the visible tree outline.
1669
1670         * UserInterface/Views/LogContentView.js:
1671         (WebInspector.LogContentView.prototype.didAppendConsoleMessageView):
1672         When evaluating in a particular target, "runAfterPendingDispatches"
1673         must wait for all other commands in that particular target to have
1674         completed. So use the target specific version.
1675
1676         * UserInterface/Views/NavigationSidebarPanel.js:
1677         (WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
1678         Gracefully handle a few more TreeElements without a represented object.
1679
1680         * UserInterface/Views/IdleTreeElement.css: Added.
1681         (.details-section.call-stack .idle .icon):
1682         * UserInterface/Views/IdleTreeElement.js: Added.
1683         (WebInspector.IdleTreeElement):
1684         Very basic tree element to encapsulate an Idle call frame with an
1685         empty represented object.
1686
1687         * UserInterface/Views/ThreadTreeElement.css: Added.
1688         (.details-section.call-stack .thread .icon):
1689         * UserInterface/Views/ThreadTreeElement.js: Added.
1690         (WebInspector.ThreadTreeElement):
1691         (WebInspector.ThreadTreeElement.prototype.get target):
1692         (WebInspector.ThreadTreeElement.prototype.refresh):
1693         (WebInspector.ThreadTreeElement.prototype.onattach):
1694         (WebInspector.ThreadTreeElement.prototype.oncontextmenu):
1695         ThreadTreeElement has no represented object, but makes it easy
1696         to refresh a list of CallFrameTreeElements for a given target.
1697
1698 2016-11-14  Timothy Hatcher  <timothy@apple.com>
1699
1700         Web Inspector: Disable Warning Filter in Debugger Tab By Default
1701         https://bugs.webkit.org/show_bug.cgi?id=164723
1702         rdar://problem/29251780
1703
1704         Reviewed by Joseph Pecoraro.
1705
1706         * UserInterface/Views/DebuggerSidebarPanel.js:
1707         (WebInspector.DebuggerSidebarPanel): Made "debugger-show-resources-with-issues-only" false by default.
1708
1709 2016-11-14  Nikita Vasilyev  <nvasilyev@apple.com>
1710
1711         Web Inspector: Settings tab should look more like a native macOS view
1712         https://bugs.webkit.org/show_bug.cgi?id=164708
1713         <rdar://problem/29241296>
1714
1715         Reviewed by Timothy Hatcher.
1716
1717         * UserInterface/Views/SettingsTabContentView.css:
1718         (.content-view.settings):
1719         (.content-view.settings > .header):
1720         (.content-view.settings > .setting-container):
1721         Match macOS Sierra default font size for settings view.
1722
1723         (.content-view.settings > .setting-container > .setting-name):
1724         (.content-view.settings > .setting-container > .setting-value-controller):
1725         (.content-view.settings > .setting-container > .setting-value-controller input):
1726         (.content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]):
1727         Make checkbox larger.
1728
1729         (.content-view.settings > .setting-container > .setting-value-controller select):
1730         (.content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
1731         Decrease the width of the number fields to make them just wide enough to fit 2 digit numbers.
1732
1733 2016-11-12  Joseph Pecoraro  <pecoraro@apple.com>
1734
1735         Web Inspector: Type Profiler and Code Coverage Profiler should work in Workers
1736         https://bugs.webkit.org/show_bug.cgi?id=164682
1737
1738         Reviewed by Darin Adler.
1739
1740         * UserInterface/Controllers/BasicBlockAnnotator.js:
1741         * UserInterface/Models/ScriptSyntaxTree.js:
1742         (WebInspector.ScriptSyntaxTree.prototype.updateTypes):
1743         Use the target associated with the Script.
1744
1745         * UserInterface/Protocol/Target.js:
1746         (WebInspector.WorkerTarget.prototype.initialize):
1747         When initializing a Worker Target, match the existing state
1748         of the Page for these profilers.
1749
1750         * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
1751         * UserInterface/Views/SourceCodeTextEditor.js:
1752         (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptTypeInformation):
1753         (WebInspector.SourceCodeTextEditor.prototype.willDismissPopover):
1754         Use the correct target for this Script / Resource.
1755
1756         (WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):
1757         (WebInspector.SourceCodeTextEditor.prototype.set _basicBlockAnnotatorEnabled):
1758         Enable / disable for all targets when toggling profilers.
1759
1760 2016-11-11  Anthony Ricaud  <rik@webkit.org>
1761
1762         Web Inspector: Whitespace in Editor should be less visible than regular content
1763         https://bugs.webkit.org/show_bug.cgi?id=164660
1764
1765         Reviewed by Matt Baker.
1766
1767         * UserInterface/Views/CodeMirrorOverrides.css:
1768         (.show-whitespace-characters .CodeMirror .cm-whitespace::before):
1769
1770 2016-11-11  Nikita Vasilyev  <nvasilyev@apple.com>
1771
1772         Web Inspector: Call RuntimeAgent.disableControlFlowProfiler when Code Coverage Profiler is turned off
1773         https://bugs.webkit.org/show_bug.cgi?id=163407
1774         <rdar://problem/28764230>
1775
1776         Reviewed by Timothy Hatcher.
1777
1778         Turning Type Profiler off by clicking [T] icon now disables its backend by calling RuntimeAgent.disableTypeProfiler().
1779
1780         * UserInterface/Views/SourceCodeTextEditor.js:
1781         (WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):
1782
1783 2016-11-11  Nikita Vasilyev  <nvasilyev@apple.com>
1784
1785         Web Inspector: Settings tab: make the header smaller to fit more content
1786         https://bugs.webkit.org/show_bug.cgi?id=164613
1787         <rdar://problem/29206007>
1788
1789         Reviewed by Timothy Hatcher.
1790
1791         * UserInterface/Views/SettingsTabContentView.css:
1792         (.content-view.settings > .header):
1793         Use hv units for margin. 1vh = 1% of viewport height. When Web Inspector window is taller, the margin is larger.
1794
1795         (.content-view.settings > .setting-container):
1796         Convert padding to margin to make spacing between the header and the first section better.
1797
1798 2016-11-10  Nikita Vasilyev  <nvasilyev@apple.com>
1799
1800         Web Inspector: Call RuntimeAgent.disableControlFlowProfiler when Code Coverage Profiler is turned off
1801         https://bugs.webkit.org/show_bug.cgi?id=163407
1802         <rdar://problem/28764230>
1803
1804         Reviewed by Joseph Pecoraro.
1805
1806         Turning Code Coverage off by clicking [C] icon now disables its backend by calling RuntimeAgent.disableControlFlowProfiler().
1807
1808         * UserInterface/Views/SourceCodeTextEditor.js:
1809         (WebInspector.SourceCodeTextEditor.prototype.set _basicBlockAnnotatorEnabled):
1810
1811 2016-11-10  Aaron Chu  <aaron_chu@apple.com>
1812
1813         Web Inspector: AXI: clarify button roles (e.g. toggle or popup button)
1814         https://bugs.webkit.org/show_bug.cgi?id=130726
1815         <rdar://problem/16420420>
1816
1817         Reviewed by Brian Burg.
1818
1819         Updated Inspector to show the button type using the new mapping information.
1820
1821         * Localizations/en.lproj/localizedStrings.js:
1822         * UserInterface/Models/DOMNode.js:
1823         (WebInspector.DOMNode.prototype.accessibilityProperties.accessibilityPropertiesCallback):
1824         (WebInspector.DOMNode.prototype.accessibilityProperties):
1825         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
1826         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility.accessibilityPropertiesCallback):
1827         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility):
1828
1829 2016-11-09  Joseph Pecoraro  <pecoraro@apple.com>
1830
1831         Web Inspector: DebuggerManager.Event.Resumed introduces test flakiness
1832         https://bugs.webkit.org/show_bug.cgi?id=161951
1833         <rdar://problem/28295767>
1834
1835         Reviewed by Brian Burg.
1836
1837         * UserInterface/Controllers/DebuggerManager.js:
1838         (WebInspector.DebuggerManager.prototype.debuggerDidResume):
1839         Now, Debugger.resumed events really mean the debugger resumed,
1840         so act immediately instead of guessing. We must still guess
1841         in legacy backends.
1842
1843         * UserInterface/Test/Test.js:
1844         When the inspector frontend encounters an issue, log it.
1845
1846         * UserInterface/Views/DebuggerSidebarPanel.js:
1847         (WebInspector.DebuggerSidebarPanel.prototype._debuggerDidPause):
1848         (WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
1849         Always enable the step out button. I don't think it makes sense to disable
1850         it sometimes, and if there are issues with this we should solve the issues
1851         instead of hiding them.
1852
1853 2016-11-09  Joseph Pecoraro  <pecoraro@apple.com>
1854
1855         Web Inspector: Associate Worker Resources with the Worker and not the Page
1856         https://bugs.webkit.org/show_bug.cgi?id=164342
1857         <rdar://problem/29075775>
1858
1859         Reviewed by Timothy Hatcher.
1860
1861         A Target may have its own list of Resource. For example, Workers may
1862         request any resources via XHR/Fetch. So we associate a ResourceCollection
1863         with a Target, and ensure we show them in Web Inspector as you would expect.
1864         At this point, Target starts acting like Frame. Target has a resourceCollection
1865         and extraScriptsCollection just like Frame. Target has events for ResourceAdded
1866         just like Frame.
1867
1868         Even though Resource loads are happening in Workers, the Network data
1869         still comes from the Page's Network agent. The added "targetId" data
1870         with the Resource will let us associate a Resoure with a Target.
1871
1872         When opening inspector after a page has loaded, the frontend loads Resources
1873         via the Page.getResourceTree path. In this case, the frontend may be
1874         informed of Resources for a Target that it does not know about yet. In
1875         these cases, it sets them aside as Orphaned resources for a target. Later,
1876         when that Target is created, it will adopt its Orphaned resources.
1877
1878         Places that used to listen to just Frame.Event.ResourceWasAdded should now
1879         also listen for Target.Event.ResourceAdded to ensure it sees the resources
1880         associated with non-page targets.
1881
1882         * UserInterface/Protocol/Target.js:
1883         (WebInspector.Target):
1884         (WebInspector.Target.prototype.get identifier):
1885         (WebInspector.Target.prototype.get resourceCollection):
1886         (WebInspector.Target.prototype.get extraScriptCollection):
1887         (WebInspector.Target.prototype.addResource):
1888         (WebInspector.Target.prototype.adoptResource):
1889         (WebInspector.Target.prototype.addScript):
1890         Give Target resource collections.
1891
1892         (WebInspector.MainTarget):
1893         (WebInspector.MainTarget.prototype.get mainResource):
1894         Pass through to the FrameResourceManager for the MainTarget.
1895
1896         (WebInspector.WorkerTarget):
1897         (WebInspector.WorkerTarget.prototype.initialize):
1898         Adopt orphaned resources on creation.
1899
1900         * UserInterface/Models/Resource.js:
1901         (WebInspector.Resource):
1902         (WebInspector.Resource.prototype.get target):
1903         (WebInspector.Resource.prototype.get type):
1904         Resource now has a Target. During creation, if there is a targetId
1905         then we must produce a Target or null (orphaned).
1906
1907         (WebInspector.Resource.prototype.associateWithScript):
1908         When associating a Resource with a Script, we can use this opportunity
1909         to convert from an XML / Other type to Script.
1910
1911         * UserInterface/Models/Script.js:
1912         (WebInspector.Script.prototype._resolveResource):
1913         When associating Scripts with a resource we must associate resources
1914         from within the proper Target. If it is the Main target we still use
1915         the FrameResourceManager which keep searches across all Frames.
1916
1917         * UserInterface/Protocol/NetworkObserver.js:
1918         (WebInspector.NetworkObserver.prototype.requestWillBeSent):
1919         * UserInterface/Controllers/FrameResourceManager.js:
1920         (WebInspector.FrameResourceManager.prototype.initialize):
1921         (WebInspector.FrameResourceManager.prototype.frameDidNavigate):
1922         (WebInspector.FrameResourceManager.prototype.resourceRequestWillBeSent):
1923         (WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
1924         (WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
1925         (WebInspector.FrameResourceManager.prototype.adoptOrphanedResourcesForTarget):
1926         (WebInspector.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
1927         (WebInspector.FrameResourceManager.prototype._addResourceToTarget):
1928         (WebInspector.FrameResourceManager.prototype._createResource):
1929         (WebInspector.FrameResourceManager.prototype._addFrameTreeFromFrameResourceTreePayload):
1930         (WebInspector.FrameResourceManager.prototype._addOrphanedResource):
1931         (WebInspector.FrameResourceManager.prototype._mainFrameDidChange):
1932         (WebInspector.FrameResourceManager.prototype._addNewResourceToFrame): Deleted.
1933         When creating Resources from Network events we may now have a targetId.
1934         Once created a Resource must be associated with a Frame, Target, or orphaned.
1935
1936         * UserInterface/Main.html:
1937         * UserInterface/Views/TargetTreeElement.js: Removed.
1938         * UserInterface/Views/WorkerTreeElement.js: Added.
1939         (WebInspector.WorkerTreeElement):
1940         (WebInspector.WorkerTreeElement.prototype.get target):
1941         (WebInspector.WorkerTreeElement.prototype.onexpand):
1942         (WebInspector.WorkerTreeElement.prototype.oncollapse):
1943         (WebInspector.WorkerTreeElement.prototype.onpopulate):
1944         (WebInspector.WorkerTreeElement.prototype.updateSourceMapResources):
1945         (WebInspector.WorkerTreeElement.prototype.onattach):
1946         (WebInspector.WorkerTreeElement.prototype.compareChildTreeElements):
1947         (WebInspector.WorkerTreeElement.prototype._handleContextMenuEvent):
1948         (WebInspector.WorkerTreeElement.prototype._scriptAdded):
1949         (WebInspector.WorkerTreeElement.prototype._resourceAdded):
1950         Convert TargetTreeElement to WorkerTreeElement as that is clearer.
1951         Behave like FrameTreeElement and populate resources on creation,
1952         handle SourceMapResource, etc.
1953
1954         * UserInterface/Views/FolderizedTreeElement.js:
1955         (WebInspector.FolderizedTreeElement.prototype.registerFolderizeSettings):
1956         (WebInspector.FolderizedTreeElement.prototype._compareTreeElementsByMainTitle):
1957         (WebInspector.FolderizedTreeElement.prototype._parentTreeElementForRepresentedObject):
1958         If the display name for a folder is `null` then there is no folder,
1959         and place such child tree elements at the top level. This will be
1960         the case for a Worker's Script's, which we choose not to folderize.
1961
1962         * UserInterface/Controllers/DebuggerManager.js:
1963         (WebInspector.DebuggerManager.prototype.scriptDidParse):
1964         * UserInterface/Controllers/TargetManager.js:
1965         (WebInspector.TargetManager.prototype.targetForIdentifier):
1966
1967         * UserInterface/Models/DefaultDashboard.js:
1968         (WebInspector.DefaultDashboard):
1969         * UserInterface/Controllers/TimelineManager.js:
1970         (WebInspector.TimelineManager):
1971         * UserInterface/Controllers/WorkerManager.js:
1972         (WebInspector.WorkerManager.prototype.workerCreated):
1973         * UserInterface/Views/OpenResourceDialog.js:
1974         (WebInspector.OpenResourceDialog.prototype.didDismissDialog):
1975         (WebInspector.OpenResourceDialog.prototype.didPresentDialog):
1976         (WebInspector.OpenResourceDialog.prototype._addScriptsForTarget): Deleted.
1977         (WebInspector.OpenResourceDialog.prototype._addResourcesForTarget): Added.
1978         Ensure those that listen for Frame.Event.ResourceWasAdded now also
1979         listen for Target.Event.ResourceAdded.
1980
1981         * UserInterface/Views/ContextMenuUtilities.js:
1982         (WebInspector.appendContextMenuItemsForSourceCode):
1983         (WebInspector.appendContextMenuItemsForResource): Deleted.
1984         * UserInterface/Views/ResourceTimelineDataGridNode.js:
1985         (WebInspector.ResourceTimelineDataGridNode.prototype.appendContextMenuItems):
1986         * UserInterface/Views/ResourceTreeElement.js:
1987         (WebInspector.ResourceTreeElement.prototype._updateTitles):
1988         (WebInspector.ResourceTreeElement.prototype._handleContextMenuEvent):
1989         Generalize ContextMenu helper to SourceCode so it can be used on a Script or Resource.
1990
1991         * UserInterface/Views/ResourceDetailsSidebarPanel.js:
1992         (WebInspector.ResourceDetailsSidebarPanel.prototype.inspect):
1993         When looking at a WorkerTarget's mainResource (Script) show the
1994         Resource Details sidebar for its Resource.
1995
1996         * UserInterface/Views/ResourceSidebarPanel.js:
1997         (WebInspector.ResourceSidebarPanel):
1998         (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
1999         (WebInspector.ResourceSidebarPanel.prototype._scriptsCleared):
2000         (WebInspector.ResourceSidebarPanel.prototype._addTargetWithMainResource):
2001         (WebInspector.ResourceSidebarPanel.prototype._targetRemoved):
2002         (WebInspector.ResourceSidebarPanel.prototype._addScriptForNonMainTarget): Deleted.
2003         Simplify ResourceSidebarPanel to only handle adding WorkerTreeElements,
2004         which will do the rest of the work for their Resources/Scripts.
2005
2006         * UserInterface/Views/SourceCodeTreeElement.js:
2007         (WebInspector.SourceCodeTreeElement.prototype.descendantResourceTreeElementTypeDidChange):
2008         When we were changing the type of a resource, it would remove and re-insert.
2009         This would collapse the parent if it was the only child in removal, and not
2010         expand the parent when re-inserting. This ensures we re-expand.
2011
2012 2016-11-09  Nikita Vasilyev  <nvasilyev@apple.com>
2013
2014         Web Inspector: Settings tab sections overlap each other in docked Inspector window
2015         https://bugs.webkit.org/show_bug.cgi?id=164564
2016
2017         Reviewed by Joseph Pecoraro.
2018
2019         * UserInterface/Views/SettingsTabContentView.css:
2020         (.content-view.settings):
2021         Make settings sections non-shrinkable and make the content view vertically scrollable.
2022
2023         (.content-view.settings > .setting-container):
2024         Set vertical padding that looks good for non-shrinkable sections.
2025
2026 2016-11-09  Nikita Vasilyev  <nvasilyev@apple.com>
2027
2028         Web Inspector: Settings tab: Checkbox labels should be clickable
2029         https://bugs.webkit.org/show_bug.cgi?id=164470
2030         <rdar://problem/29133787>
2031
2032         Reviewed by Matt Baker.
2033
2034         * UserInterface/Views/SettingsTabContentView.js:
2035         (WebInspector.SettingsTabContentView.prototype.initialLayout):
2036         Add a label element to make checkboxes clickable.
2037
2038 2016-11-09  Devin Rousso  <dcrousso+webkit@gmail.com>
2039
2040         Web Inspector: Allow FolderTreeElement to display content when selected
2041         https://bugs.webkit.org/show_bug.cgi?id=164407
2042
2043         Reviewed by Timothy Hatcher.
2044
2045         * UserInterface/Main.html:
2046         Add CollectionContentView and TitleView.
2047
2048         * UserInterface/Base/Main.js:
2049         * UserInterface/Views/ContentView.js:
2050         (WebInspector.ContentView.createFromRepresentedObject):
2051         (WebInspector.ContentView.isViewable):
2052         Add support for Collection as the representedObject of a content view.
2053
2054         * UserInterface/Views/CollectionContentView.css: Added.
2055         (.content-view.collection):
2056         (.content-view.collection > .content-view):
2057         * UserInterface/Views/CollectionContentView.js: Added.
2058         (WebInspector.CollectionContentView):
2059         (WebInspector.CollectionContentView.prototype.initialLayout):
2060         (WebInspector.CollectionContentView.prototype._addContentViewForItem):
2061         (WebInspector.CollectionContentView.prototype._removeContentViewForItem):
2062         (WebInspector.CollectionContentView.prototype._handleItemAdded):
2063         (WebInspector.CollectionContentView.prototype._handleItemRemoved):
2064         (WebInspector.CollectionContentView.prototype._handleContentError):
2065         Takes in a Collection when constructed, and attempts to display a sub-ContentView for each
2066         item in the collection if the type of the collection is viewable en masse.  Currently, this
2067         is only supported for WebInspector.Resource.Type.Image collections.
2068
2069         * UserInterface/Views/ResourceContentView.js:
2070         (WebInspector.ResourceContentView.prototype._contentError):
2071         Dispatch an event whenever the content fails to load.
2072
2073         * UserInterface/Views/ResourceSidebarPanel.js:
2074         (WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
2075         * UserInterface/Views/ResourcesTabContentView.js:
2076         (WebInspector.ResourcesTabContentView.prototype.canShowRepresentedObject):
2077         Allow FolderTreeElements to be selected.
2078
2079         * UserInterface/Views/TitleView.css: Added.
2080         (.title-view):
2081         * UserInterface/Views/TitleView.js: Added.
2082         (WebInspector.TitleView):
2083         Basic view that displays the given text in the center of the viewable area.
2084
2085 2016-11-03  Nikita Vasilyev  <nvasilyev@apple.com>
2086
2087         Web Inspector: Stack overflow when searching a timeline recording for JS function names
2088         https://bugs.webkit.org/show_bug.cgi?id=161784
2089         <rdar://problem/28219498>
2090
2091         Reviewed by Timothy Hatcher.
2092
2093         _populate method of ProfileNodeDataGridNode and ProfileDataGridNode traverses
2094         all children of a given node. makeVisible function of DataGrid#_applyFiltersToNode
2095         traverses all its parents to expand them. This creates an infinite recursion.
2096         Remove "populate" event before appending child nodes to prevent it.
2097
2098         * UserInterface/Views/ProfileDataGridNode.js:
2099         (WebInspector.ProfileDataGridNode.prototype._populate):
2100         (WebInspector.ProfileDataGridNode):
2101         * UserInterface/Views/ProfileNodeDataGridNode.js:
2102         (WebInspector.ProfileNodeDataGridNode.prototype._populate):
2103         (WebInspector.ProfileNodeDataGridNode):
2104
2105 2016-11-03  Devin Rousso  <dcrousso+webkit@gmail.com>
2106
2107         Web Inspector: Modify FolderTreeElement to have a Collection as a its represented object
2108         https://bugs.webkit.org/show_bug.cgi?id=164349
2109
2110         Reviewed by Matt Baker.
2111
2112         * UserInterface/Views/FolderTreeElement.js:
2113         (WebInspector.FolderTreeElement):
2114         Now accepts a representedObject parameter, which must be a WebInspector.Collection.
2115
2116         * UserInterface/Views/FolderizedTreeElement.js:
2117         (WebInspector.FolderizedTreeElement.prototype.registerFolderizeSettings):
2118         (WebInspector.FolderizedTreeElement.prototype.updateParentStatus):
2119         (WebInspector.FolderizedTreeElement.prototype._parentTreeElementForRepresentedObject):
2120         (WebInspector.FolderizedTreeElement.prototype._settingsForRepresentedObject):
2121         (WebInspector.FolderizedTreeElement.prototype._shouldGroupIntoFolders):
2122         (WebInspector.FolderizedTreeElement):
2123         Rework the logic for creating WebInspector.FolderTreeElement so that items for the
2124         representedObject parameter may be passed in via registerFolderizeSettings.
2125
2126         * UserInterface/Views/FrameTreeElement.js:
2127         (WebInspector.FrameTreeElement):
2128         (WebInspector.FrameTreeElement.): Deleted.
2129         (WebInspector.FrameTreeElement.makeChildCountCallback): Deleted.
2130         Rework logic for calling registerFolderizeSettings to support the representedObject
2131         parameter.  Also changed calls to WebInspector.Frame to support the
2132         WebInspector.Collection class.
2133
2134         * UserInterface/Views/ResourceSidebarPanel.js:
2135         (WebInspector.ResourceSidebarPanel.prototype.treeElementForRepresentedObject):
2136         (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
2137         (WebInspector.ResourceSidebarPanel.prototype._scriptsCleared):
2138         Create WebInspector.Collection instances of Script model objects for additional folders
2139         created by the Resources sidebar:
2140          - Anonymous Scripts
2141          - Extension Scripts
2142          - Extra Scripts
2143
2144 2016-11-02  Joseph Pecoraro  <pecoraro@apple.com>
2145
2146         Web Inspector: Include DebuggerAgent in Workers - see, pause, and step through scripts
2147         https://bugs.webkit.org/show_bug.cgi?id=164136
2148         <rdar://problem/29028462>
2149
2150         Reviewed by Brian Burg.
2151         
2152         By implementing DebuggerAgent, Workers will inform the frontend about
2153         Scripts that evaluate in the Worker's VM and the Worker VM can pause
2154         and send the pausing CallFrames to the frontend. This means that
2155         WebInspector.Script and WebInspector.CallFrame will need to be made
2156         target aware. This also means that each Target will have its own
2157         set of debugger data, such as the list of scripts and pause data
2158         like the pause reason / call frames. Previously all this data was
2159         managed by DebuggerManager.
2160
2161         With this change we split that data out of DebuggerManager to be
2162         per-target DebuggerData. DebuggerManager keeps `activeCallFrame`
2163         but the list of scripts and pause data have moved into `DebuggerData`
2164         which is per-target, accessed through DebuggerManager's new
2165         dataForTarget(target) method.
2166
2167         Finally we make a few changes to the UserInterface to make Workers
2168         and their scripts, appear grouped together. The Resources sidebar
2169         previously had a single top level item for the Main Frame, which
2170         has all its resources as its children (potentially grouped into
2171         folders). With this change, each Worker gets its own top level
2172         item as well, and the Worker's subresources (imported scripts)
2173         become its children.
2174
2175         We also now associate a single mainResource with Targets. In the
2176         case of Workers, we assume and assert that this is a Script. If
2177         this were to ever change we would need to adjust the assumptions.
2178
2179         * UserInterface/Main.html:
2180         * UserInterface/Test.html:
2181         New files.
2182
2183         * UserInterface/Base/Main.js:
2184         * UserInterface/Test/Test.js:
2185         Add WebInspector.assumingMainTarget to fill in all the places where
2186         we assume the main target right now, but would need to handle non-main
2187         targets as other agents are implemented in workers. For example profile
2188         data that assumes the main target right now could be worker targets
2189         when we implement ScriptProfiler / Heap agents.
2190
2191         * UserInterface/Protocol/Connection.js:
2192         (InspectorBackend.WorkerConnection):
2193         * UserInterface/Protocol/Target.js:
2194         (WebInspector.Target):
2195         (WebInspector.Target.prototype.get DebuggerAgent):
2196         (WebInspector.Target.prototype.get mainResource):
2197         (WebInspector.Target.prototype.set mainResource):
2198         (WebInspector.WorkerTarget.prototype.initialize):
2199         (WebInspector.WorkerTarget):
2200         Include DebuggerAgent in Targets.
2201         Include a mainResource for Worker Targets.
2202
2203         * UserInterface/Protocol/DebuggerObserver.js:
2204         (WebInspector.DebuggerObserver.prototype.scriptParsed):
2205         (WebInspector.DebuggerObserver.prototype.breakpointResolved):
2206         (WebInspector.DebuggerObserver.prototype.paused):
2207         (WebInspector.DebuggerObserver.prototype.resumed):
2208         Pass the target on to managers when necessary.
2209
2210         * UserInterface/Models/DebuggerData.js: Added.
2211         (WebInspector.DebuggerData):
2212         (WebInspector.DebuggerData.prototype.get target):
2213         (WebInspector.DebuggerData.prototype.get callFrames):
2214         (WebInspector.DebuggerData.prototype.get pauseReason):
2215         (WebInspector.DebuggerData.prototype.get pauseData):
2216         (WebInspector.DebuggerData.prototype.get scripts):
2217         (WebInspector.DebuggerData.prototype.scriptForIdentifier):
2218         (WebInspector.DebuggerData.prototype.scriptsForURL):
2219         (WebInspector.DebuggerData.prototype.reset):
2220         (WebInspector.DebuggerData.prototype.addScript):
2221         (WebInspector.DebuggerData.prototype.pause):
2222         (WebInspector.DebuggerData.prototype.unpause):
2223         Extract per-target data from DebuggerManager. This includes the list
2224         of scripts evaluated in a Target, and any pause data for this target
2225         such as the pause reason and call frames.
2226
2227         * UserInterface/Controllers/DebuggerManager.js:
2228         (WebInspector.DebuggerManager.prototype.dataForTarget):
2229         (WebInspector.DebuggerManager.prototype.get pauseReason): Deleted.
2230         (WebInspector.DebuggerManager.prototype.get pauseData): Deleted.
2231         (WebInspector.DebuggerManager.prototype.get callFrames): Deleted.
2232         (WebInspector.DebuggerManager.prototype.reset):
2233         New way to access per-target debugger data.
2234
2235         (WebInspector.DebuggerManager.prototype.initializeTarget):
2236         When a new Target is created, synchronize frontend state with the target.
2237         Things like the list of breakpoints and global breakpoint states.
2238
2239         (WebInspector.DebuggerManager.prototype.scriptForIdentifier):
2240         (WebInspector.DebuggerManager.prototype.scriptsForURL):
2241         Convenience accessors for scripts must now provide a Target.
2242
2243         (WebInspector.DebuggerManager.prototype.get knownNonResourceScripts):
2244         This is a convenience accessors for a list of all scripts across all targets
2245         so this handles getting the list across all targets.
2246
2247         (WebInspector.DebuggerManager.prototype.pause):
2248         (WebInspector.DebuggerManager.prototype.resume):
2249         (WebInspector.DebuggerManager.prototype.stepOver):
2250         (WebInspector.DebuggerManager.prototype.stepInto):
2251         (WebInspector.DebuggerManager.prototype.stepOut):
2252         (WebInspector.DebuggerManager.prototype.continueToLocation):
2253         Stepping commands affect the current target with the active call frame.
2254         Eventually we will change Pause and Resume behavior to affect all targets.
2255         
2256         (WebInspector.DebuggerManager.prototype.addBreakpoint):
2257         (WebInspector.DebuggerManager.prototype.breakpointResolved):
2258         (WebInspector.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):
2259         (WebInspector.DebuggerManager.prototype._setBreakpoint):
2260         (WebInspector.DebuggerManager.prototype._removeBreakpoint):
2261         Breakpoints should be set on all targets, but we need a way
2262         to set them on a specific target, when initializing an
2263         individual target when we want to inform that single target
2264         of all of the breakpoints.
2265
2266         (WebInspector.DebuggerManager.prototype._breakpointDisabledStateDidChange):
2267         (WebInspector.DebuggerManager.prototype._updateBreakOnExceptionsState):
2268         Changing global breakpoint state should inform all targets.
2269
2270         (WebInspector.DebuggerManager.prototype.scriptDidParse):
2271         Associate Scripts with a Target. Identify the main resource of a
2272         Worker Target and set it as soon as we can.
2273
2274         (WebInspector.DebuggerManager.prototype.debuggerDidPause):
2275         (WebInspector.DebuggerManager.prototype.debuggerDidResume):
2276         (WebInspector.DebuggerManager.prototype._sourceCodeLocationFromPayload):
2277         (WebInspector.DebuggerManager.prototype._scopeChainFromPayload):
2278         (WebInspector.DebuggerManager.prototype._scopeChainNodeFromPayload):
2279         (WebInspector.DebuggerManager.prototype._mainResourceDidChange):
2280         (WebInspector.DebuggerManager.prototype._didResumeInternal):
2281         Pausing and resuming now happens per-target, so associate
2282         created model objects (CallFrame, ScopeChain objects) and any
2283         other necessary data with the target.
2284
2285         * UserInterface/Models/Breakpoint.js:
2286         (WebInspector.Breakpoint):
2287         (WebInspector.Breakpoint.prototype.get target):
2288         (WebInspector.Breakpoint.prototype.get info):
2289         * UserInterface/Models/CallFrame.js:
2290         (WebInspector.CallFrame):
2291         (WebInspector.CallFrame.prototype.get target):
2292         (WebInspector.CallFrame.fromDebuggerPayload):
2293         (WebInspector.CallFrame.fromPayload):
2294         * UserInterface/Models/ConsoleMessage.js:
2295         (WebInspector.ConsoleMessage):
2296         * UserInterface/Models/Script.js:
2297         (WebInspector.Script):
2298         (WebInspector.Script.prototype.get target):
2299         (WebInspector.Script.prototype.isMainResource):
2300         (WebInspector.Script.prototype.requestContentFromBackend):
2301         (WebInspector.Script.prototype._resolveResource):
2302         * UserInterface/Models/StackTrace.js:
2303         (WebInspector.StackTrace.fromPayload):
2304         (WebInspector.StackTrace.fromString):
2305         * UserInterface/Models/ProbeManager.js:
2306         (WebInspector.ProbeManager.prototype.didSampleProbe):
2307         * UserInterface/Models/Probe.js:
2308         (WebInspector.ProbeSample):
2309         * UserInterface/Views/ConsoleMessageView.js:
2310         (WebInspector.ConsoleMessageView.prototype._appendLocationLink):
2311         (WebInspector.ConsoleMessageView.prototype._formatParameterAsString):
2312         Associate model objects with a specific target where necessary.
2313
2314         * UserInterface/Views/ObjectTreeBaseTreeElement.js:
2315         (WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
2316         * UserInterface/Controllers/RuntimeManager.js:
2317         (WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
2318         * UserInterface/Protocol/RemoteObject.js:
2319         (WebInspector.RemoteObject.prototype.findFunctionSourceCodeLocation):
2320         Use target specific DebuggerAgent where necessary.
2321
2322         * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
2323         * UserInterface/Controllers/TimelineManager.js:
2324         (WebInspector.TimelineManager.prototype._callFramesFromPayload):
2325         * UserInterface/Models/ScriptTimelineRecord.js:
2326         (WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeFromPayload):
2327         * UserInterface/Views/EventListenerSectionGroup.js:
2328         (WebInspector.EventListenerSectionGroup.prototype._functionTextOrLink):
2329         (WebInspector.EventListenerSectionGroup):
2330         * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
2331         (WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode.node.shortestGCRootPath.):
2332         (WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode):
2333         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populateWindowPreview):
2334         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populatePreview):
2335         (WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPathRow):
2336         * UserInterface/Views/ProfileDataGridNode.js:
2337         (WebInspector.ProfileDataGridNode.prototype.iconClassName):
2338         (WebInspector.ProfileDataGridNode.prototype.filterableDataForColumn):
2339         (WebInspector.ProfileDataGridNode.prototype._displayContent):
2340         Use assumed main target and audit these when the Worker gets more Agents.
2341
2342         * UserInterface/Controllers/FrameResourceManager.js:
2343         (WebInspector.FrameResourceManager.prototype._initiatorSourceCodeLocationFromPayload):
2344         This will always be the main target because only the main target
2345         has access to the DOM.
2346
2347         * UserInterface/Views/SourceCodeTextEditor.js:
2348         (WebInspector.SourceCodeTextEditor.prototype.get target):
2349         (WebInspector.SourceCodeTextEditor.prototype.customPerformSearch):
2350         (WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
2351         (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression.populate):
2352         (WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression):
2353         (WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction.didGetDetails):
2354         (WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction):
2355         Update target specific actions to use the proper target's agents.
2356
2357         * UserInterface/Views/TargetTreeElement.js: Added.
2358         (WebInspector.TargetTreeElement):
2359         (WebInspector.TargetTreeElement.prototype.get target):
2360         (WebInspector.TargetTreeElement.prototype.onexpand):
2361         (WebInspector.TargetTreeElement.prototype.oncollapse):
2362         Add a new tree element for a Target. We currently assume that the
2363         main resource for a Target will be a Script right now, as is the
2364         case for Web Workers. This simply remembers its expanded or
2365         collapsed state and has a better icon.
2366
2367         * UserInterface/Views/ResourceIcons.css:
2368         (body:matches(.mac-platform, .windows-platform) .script.worker-icon .icon):
2369         (body:matches(.mac-platform, .windows-platform) .large .script.worker-icon .icon):
2370         * UserInterface/Images/WorkerScript.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocument.png.
2371         * UserInterface/Images/WorkerScript@2x.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocument@2x.png.
2372         * UserInterface/Images/WorkerScriptLarge.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge.png.
2373         * UserInterface/Images/WorkerScriptLarge@2x.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge@2x.png.
2374         Improve icon for a Worker's main resource script.
2375
2376         * UserInterface/Views/ResourceSidebarPanel.js:
2377         (WebInspector.ResourceSidebarPanel):
2378         (WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
2379         (WebInspector.ResourceSidebarPanel.prototype._scriptsCleared):
2380         (WebInspector.ResourceSidebarPanel.prototype._addScriptForNonMainTarget):
2381         (WebInspector.ResourceSidebarPanel.prototype._addTargetWithMainResource):
2382         (WebInspector.ResourceSidebarPanel.prototype._targetRemoved):
2383         * UserInterface/Views/SearchSidebarPanel.js:
2384         (WebInspector.SearchSidebarPanel.prototype.performSearch.searchScripts):
2385         (WebInspector.SearchSidebarPanel.prototype._searchTreeElementForScript):
2386         * UserInterface/Views/OpenResourceDialog.js:
2387         (WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline.createTreeElement):
2388         (WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline):
2389         (WebInspector.OpenResourceDialog.prototype.didDismissDialog):
2390         (WebInspector.OpenResourceDialog.prototype.didPresentDialog):
2391         (WebInspector.OpenResourceDialog.prototype._addResourcesForFrame):
2392         (WebInspector.OpenResourceDialog.prototype._addScriptsForTarget):
2393         (WebInspector.OpenResourceDialog.prototype._scriptAdded):
2394         (WebInspector.OpenResourceDialog):
2395         * UserInterface/Views/DebuggerSidebarPanel.js:
2396         (WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToTreeOutline):
2397         (WebInspector.DebuggerSidebarPanel.prototype._debuggerCallFramesDidChange):
2398         (WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
2399         (WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
2400         Include scripts from non-main targets in sidebars.
2401
2402 2016-11-01  Devin Rousso  <dcrousso+webkit@gmail.com>
2403
2404         Web Inspector: Creating a new pseudo-selector in the Styles sidebar doesn't work on first attempt
2405         https://bugs.webkit.org/show_bug.cgi?id=164092
2406
2407         Reviewed by Timothy Hatcher.
2408
2409         * UserInterface/Views/CSSStyleDeclarationSection.css:
2410         (.style-declaration-section:not(.invalid-selector).rule-disabled > .header > .icon):
2411         (.style-declaration-section.invalid-selector > .header > .icon):
2412         (.style-declaration-section.invalid-selector > .header > .selector,):
2413         (.style-declaration-section.rule-disabled > .header > .icon): Deleted.
2414
2415         * UserInterface/Views/CSSStyleDeclarationSection.js:
2416         (WebInspector.CSSStyleDeclarationSection):
2417         (WebInspector.CSSStyleDeclarationSection.prototype.refresh):
2418         (WebInspector.CSSStyleDeclarationSection.prototype._handleIconElementClicked):
2419         (WebInspector.CSSStyleDeclarationSection.prototype._updateSelectorIcon): Added.
2420         Re-add logic removed by https://webkit.org/b/159734 for handling invalid selectors.  Instead
2421         of just refreshing the section whenever the represented CSSRule changes selectors, we only
2422         need to refresh if the selector no longer applies to the current element.
2423
2424         (WebInspector.CSSStyleDeclarationSection.prototype._handleMouseMove): Added.
2425         Fix another issue discovered while adding the invalid selector warnings, where the title
2426         attribute of each individual selector was no longer visible.  To fix this, whenever the user
2427         moves their mouse over the selector input, the position is compared to each selector to find
2428         the first one that matches, whose title is then applied to the input element.
2429
2430 2016-11-01  Joseph Pecoraro  <pecoraro@apple.com>
2431
2432         Web Inspector: Improve debugger highlight in some exception cases
2433         https://bugs.webkit.org/show_bug.cgi?id=164300
2434
2435         Reviewed by Matt Baker.
2436
2437         * UserInterface/Views/SourceCodeTextEditor.js:
2438         (WebInspector.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
2439         When walking up AST nodes and reach a throw statement, use that.
2440
2441 2016-11-01  Joseph Pecoraro  <pecoraro@apple.com>
2442
2443         Web Inspector: Cleanup stale code in NetworkSidebarPanel
2444         https://bugs.webkit.org/show_bug.cgi?id=164295
2445
2446         Reviewed by Matt Baker.
2447
2448         * UserInterface/Views/NetworkSidebarPanel.js:
2449         (WebInspector.NetworkSidebarPanel.prototype.closed): Deleted.
2450         This doesn't appear to be needed since NetworkSidebarPanel never
2451         registered any event listeners.
2452
2453 2016-11-01  Devin Rousso  <dcrousso+webkit@gmail.com>
2454
2455         REGRESSION (r191419): Web Inspector: Autocomplete is broken
2456         https://bugs.webkit.org/show_bug.cgi?id=150493
2457
2458         Reviewed by Timothy Hatcher.
2459
2460         Fixed CodeMirror.undo() logic rolled out by r191539 <https://webkit.org/b/150537>
2461
2462         Added calls to CodeMirror.changeGeneration(true) which tells the history stack to "close"
2463         the current event, preventing it from being consolidated with new changes.  If the user
2464         typed fast enough, non-completion changes (like adding ":" in CSS) would get merged with
2465         completion changes, causing calls to CodeMirror.undo() to undo those changes as well.  To
2466         prevent this, a boolean variable is set to true whenever a completion "activity" is in
2467         progress, defined by a sequence of completion related events.  When this "activity" first
2468         starts, call CodeMirror.changeGeneration(true) to freeze the current history.
2469
2470         See original bug for more information <https://webkit.org/b/147720>.
2471
2472         * UserInterface/Controllers/CodeMirrorCompletionController.js:
2473         (WebInspector.CodeMirrorCompletionController):
2474         (WebInspector.CodeMirrorCompletionController.prototype.updateCompletions):
2475         (WebInspector.CodeMirrorCompletionController.prototype.isCompletionChange):
2476         (WebInspector.CodeMirrorCompletionController.prototype.hideCompletions):
2477         (WebInspector.CodeMirrorCompletionController.prototype.close):
2478         (WebInspector.CodeMirrorCompletionController.prototype.completionSuggestionsSelectedCompletion):
2479         (WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint.update):
2480         (WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint):
2481         (WebInspector.CodeMirrorCompletionController.prototype._commitCompletionHint.update):
2482         (WebInspector.CodeMirrorCompletionController.prototype._commitCompletionHint):
2483         (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.update):
2484         (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint):
2485         (WebInspector.CodeMirrorCompletionController.prototype._completeAtCurrentPosition):
2486         (WebInspector.CodeMirrorCompletionController.prototype._handleBeforeChange):
2487         (WebInspector.CodeMirrorCompletionController.prototype._createCompletionHintMarker): Deleted.
2488         (WebInspector.CodeMirrorCompletionController.prototype._removeLastChangeFromHistory): Deleted.
2489         (WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.clearMarker): Deleted.
2490
2491 2016-11-01  Devin Rousso  <dcrousso+webkit@gmail.com>
2492
2493         Web Inspector: Replace sublists inside DOM-related model objects with WI.Collection
2494         https://bugs.webkit.org/show_bug.cgi?id=164098
2495
2496         Reviewed by Timothy Hatcher.
2497
2498         * UserInterface/Models/DOMTree.js:
2499         * UserInterface/Models/Frame.js:
2500         Add support for WebInspector.Collection.
2501
2502         * UserInterface/Models/Script.js:
2503         (WebInspector.Script):
2504         * UserInterface/Views/DebuggerSidebarPanel.js:
2505         (WebInspector.DebuggerSidebarPanel.prototype._addResourcesRecursivelyForFrame):
2506         * UserInterface/Views/FrameTreeElement.js:
2507         (WebInspector.FrameTreeElement):
2508         (WebInspector.FrameTreeElement.prototype.onpopulate):
2509         * UserInterface/Views/OpenResourceDialog.js:
2510         (WebInspector.OpenResourceDialog.prototype._addResourcesForFrame):
2511         Use new functions defined by changing to WebInspector.Collection.
2512
2513 2016-11-01  Devin Rousso  <dcrousso+webkit@gmail.com>
2514
2515         Web Inspector: Fix double remove of ResourceCollection if type changes
2516         https://bugs.webkit.org/show_bug.cgi?id=164268
2517
2518         Reviewed by Joseph Pecoraro.
2519
2520         * UserInterface/Models/ResourceCollection.js:
2521         (WebInspector.ResourceCollection.prototype._resourceTypeDidChange):
2522         Change logic so that a non-typed collection will not try to remove a resource that has
2523         changed types from the sub-collection of its old type, since the sub-collection itself will
2524         handle the removal inside its own event listener for the type change.
2525
2526 2016-11-01  Ryosuke Niwa  <rniwa@webkit.org>
2527
2528         Web Inspector: Add the support for custom elements
2529         https://bugs.webkit.org/show_bug.cgi?id=164266
2530         <rdar://problem/29038883>
2531
2532         Reviewed by Joseph Pecoraro.
2533
2534         Show the custom element state in DOM node's details pane:
2535          - "Element" for all builtin elements.
2536          - "Element (Custom)" for any upgraded custom elements.
2537          - "Element (Waiting to be upgraded)" for any element waiting to be upgraded.
2538          - "Element (Failed to upgrade)" for any custom element that failed during construction or an upgrade.
2539
2540         And add "Jump to Definition" to the context menu of an node to find the custom element's definition.
2541
2542         * Localizations/en.lproj/localizedStrings.js: Added localized strings.
2543         * UserInterface/Controllers/DOMTreeManager.js:
2544         (WebInspector.DOMTreeManager.prototype._customElementStateChanged): Added. Update the state and fire
2545         WebInspector.DOMTreeManager.Event.CustomElementStateChanged to update the node's details pane.
2546         * UserInterface/Models/DOMNode.js:
2547         (WebInspector.DOMNode): Set the custom element state or default to "builtin". Use null when the node
2548         is not an element.
2549         (WebInspector.DOMNode.prototype.isCustomElement): Added. Returns true if this is a successfully
2550         constructed or upgraded custom element.
2551         (WebInspector.DOMNode.prototype.customElementState): Added.
2552         (WebInspector.DOMNode.CustomElementState): Added.
2553         * UserInterface/Protocol/DOMObserver.js:
2554         (WebInspector.DOMObserver.prototype.customElementStateChanged): Added.
2555         * UserInterface/Protocol/RemoteObject.js:
2556         (WebInspector.RemoteObject.prototype.getProperty): Added. Retrieves the property of a given name from
2557         the remote backend.
2558         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
2559         (WebInspector.DOMNodeDetailsSidebarPanel): Call _customElementStateChanged when the custom element
2560         state changes by listening to WebInspector.DOMTreeManager.Event.CustomElementStateChanged.
2561         (WebInspector.DOMNodeDetailsSidebarPanel.prototype.layout):
2562         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshIdentity): Extracted from layout.
2563         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._customElementStateChanged): Added. 
2564         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._nodeTypeDisplayName): Include the custom element
2565         state when it's not a builtin element (_customElementState returns null in that case).
2566         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._customElementState): Get the localized string for
2567         each custom element state.
2568         * UserInterface/Views/DOMTreeElement.js:
2569         (WebInspector.DOMTreeElement.prototype._populateNodeContextMenu): Add "Jump to Definition" item in the
2570         context menu of an element when it's a successfully constructed or upgraded custom element.
2571
2572 2016-10-31  Joseph Pecoraro  <pecoraro@apple.com>
2573
2574         Web Inspector: Shadow DOM scoped styles are missing
2575         https://bugs.webkit.org/show_bug.cgi?id=164247
2576         <rdar://problem/29035061>
2577
2578         Reviewed by Antti Koivisto.
2579
2580         * UserInterface/Models/DOMNodeStyles.js:
2581         (WebInspector.DOMNodeStyles.prototype.refresh.fetchedInlineStyles):
2582         Fix incorrect WrapperPromise usage.
2583
2584 2016-10-31  Devin Rousso  <dcrousso+webkit@gmail.com>
2585
2586         Web Inspector: Arrows for Styles scope bar item are misaligned
2587         https://bugs.webkit.org/show_bug.cgi?id=164159
2588
2589         Reviewed by Timothy Hatcher.
2590
2591         * UserInterface/Views/ScopeRadioButtonNavigationItem.css:
2592         (.scope-radio-button-navigation-item > .scope-radio-button-item-select:focus):
2593         (.scope-radio-button-navigation-item > .arrows):
2594
2595 2016-10-31  Devin Rousso  <dcrousso+webkit@gmail.com>
2596
2597         Web Inspector: Entering ":n" in Open Resource Dialog, where n > number of lines, should jump to the last line
2598         https://bugs.webkit.org/show_bug.cgi?id=160840
2599
2600         Reviewed by Timothy Hatcher.
2601
2602         * UserInterface/Views/TextEditor.js:
2603         (WebInspector.TextEditor.prototype.revealPosition):
2604         Since it is possible for the given position to be outside the bounds of the CodeMirror
2605         instance, wait to get the line handler for the highlight animation until we have constrained
2606         the position value.
2607
2608 2016-10-28  Devin Rousso  <dcrousso+webkit@gmail.com>
2609
2610         Web Inspector: Preferences for Text Editor behavior
2611         https://bugs.webkit.org/show_bug.cgi?id=149120
2612
2613         Reviewed by Timothy Hatcher.
2614
2615         * Localizations/en.lproj/localizedStrings.js:
2616
2617         * UserInterface/Base/Main.js:
2618         (WebInspector.loaded):
2619         (WebInspector.contentLoaded):
2620         (WebInspector.contentLoaded.setTabSize):
2621         (WebInspector.contentLoaded.setInvalidCharacterClassName):
2622         (WebInspector.contentLoaded.setWhitespaceCharacterClassName):
2623         (WebInspector._tryToRestorePendingTabs):
2624         (WebInspector.indentString):
2625         (WebInspector._updateNewTabButtonState): Deleted.
2626         (WebInspector._newTabItemClicked): Deleted.
2627         Removed calls to the New Tab tab bar item on the Tab Bar instance.
2628         Added listener to the indentUnit setting to change the tab-size value on <body>.
2629         Created helper function to generate the indentString value from settings.
2630
2631         * UserInterface/Base/Test.js:
2632         (WebInspector.indentString):
2633         Assume indent string is "    " for tests.
2634
2635         * UserInterface/Base/Setting.js:
2636         Added global WebInspector.settings dictionary for holding settings with UI editors.
2637
2638         * UserInterface/Main.html:
2639         Added GeneralTabBarItem, PinnedTabBarItem, and SettingsTabContentView.
2640
2641         * UserInterface/Models/CSSStyleDeclaration.js:
2642         (WebInspector.CSSStyleDeclaration.prototype.generateCSSRuleString):
2643         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
2644         (WebInspector.CSSStyleDeclarationTextEditor.prototype._formattedContentFromEditor):
2645         (WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update):
2646         * UserInterface/Views/VisualStylePropertyEditor.js:
2647         (WebInspector.VisualStylePropertyEditor.generateFormattedTextForNewProperty):
2648         * UserInterface/Views/SourceCodeTextEditor.js:
2649         (WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction.didGetDetails):
2650         Now uses WebInspector.indentUnit for indentation values
2651
2652         * UserInterface/Views/CodeMirrorAdditions.js:
2653         Added "showWhitespaceCharacter" option to CodeMirror.  When enabled, it adds an overlay to
2654         the editor that will use pseudo-elements to display whitespace characters (unicode 00B7).
2655
2656         * UserInterface/Views/CodeMirrorOverrides.css:
2657         (.CodeMirror .cm-tab):
2658         (.show-whitespace-characters .CodeMirror .cm-tab::before):
2659         (.show-whitespace-characters .CodeMirror .cm-whitespace::before):
2660         (.show-whitespace-characters .CodeMirror .cm-whitespace-1::before):
2661         (.show-whitespace-characters .CodeMirror .cm-whitespace-2::before):
2662         (.show-whitespace-characters .CodeMirror .cm-whitespace-3::before):
2663         (.show-whitespace-characters .CodeMirror .cm-whitespace-4::before):
2664         (.show-whitespace-characters .CodeMirror .cm-whitespace-5::before):
2665         (.show-whitespace-characters .CodeMirror .cm-whitespace-6::before):
2666         (.show-whitespace-characters .CodeMirror .cm-whitespace-7::before):
2667         (.show-whitespace-characters .CodeMirror .cm-whitespace-8::before):
2668         (.show-whitespace-characters .CodeMirror .cm-whitespace-9::before):
2669         (.show-whitespace-characters .CodeMirror .cm-whitespace-10::before):
2670         (.show-whitespace-characters .CodeMirror .cm-whitespace-11::before):
2671         (.show-whitespace-characters .CodeMirror .cm-whitespace-12::before):
2672         (.show-whitespace-characters .CodeMirror .cm-whitespace-13::before):
2673         (.show-whitespace-characters .CodeMirror .cm-whitespace-14::before):
2674         (.show-whitespace-characters .CodeMirror .cm-whitespace-15::before):
2675         (.show-whitespace-characters .CodeMirror .cm-whitespace-16::before):
2676         (.show-invalid-characters .CodeMirror .cm-invalidchar):
2677         (.CodeMirror .cm-invalidchar): Deleted.
2678         Use unicode character 00B7 (middle dot) to display a space.  Also uses a grey border for
2679         visualizing tab characters.
2680
2681         * UserInterface/Views/ApplicationCacheFrameContentView.js:
2682         * UserInterface/Views/CSSStyleDeclarationTextEditor.js:
2683         * UserInterface/Views/ClusterContentView.js:
2684         * UserInterface/Views/DOMTreeContentView.js:
2685         * UserInterface/Views/DatabaseContentView.js:
2686         * UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
2687         * UserInterface/Views/NetworkGridContentView.js:
2688         * UserInterface/Views/ResourceContentView.js:
2689         * UserInterface/Views/ScriptContentView.js:
2690         * UserInterface/Views/TabContentView.js:
2691         * UserInterface/Views/TimelineRecordingContentView.js:
2692         Add calls to super.shown(), super.hidden(), and super.closed().
2693
2694         * UserInterface/Views/ConsoleTabContentView.js:
2695         * UserInterface/Views/DebuggerTabContentView.js:
2696         * UserInterface/Views/ElementsTabContentView.js:
2697         * UserInterface/Views/NetworkTabContentView.js:
2698         * UserInterface/Views/NewTabContentView.js:
2699         * UserInterface/Views/ResourcesTabContentView.js:
2700         * UserInterface/Views/SearchTabContentView.js:
2701         * UserInterface/Views/StorageTabContentView.js:
2702         * UserInterface/Views/TimelineTabContentView.js:
2703         Now uses WebInspector.GeneralTabBarItem.
2704
2705         * UserInterface/Views/GeneralTabBarItem.js: Added.
2706         (WebInspector.GeneralTabBarItem):
2707         (WebInspector.GeneralTabBarItem.prototype.set title):
2708         (WebInspector.GeneralTabBarItem.prototype._handleContextMenuEvent):
2709         Split from TabBarItem.js to make pinned tab bar items more distinct.
2710
2711         * UserInterface/Views/Main.css:
2712         (body):
2713         Removed tab-size.
2714
2715         * UserInterface/Views/PinnedTabBarItem.js: Added.
2716         (WebInspector.PinnedTabBarItem):
2717         Split from TabBarItem.js to make pinned tab bar items more distinct.
2718
2719         * UserInterface/Views/SettingsTabContentView.css: Added.
2720         (.content-view.settings):
2721         (.content-view.settings > .header):
2722         (.content-view.settings > .setting-container):
2723         (.content-view.settings > .setting-container > .setting-name):
2724         (.content-view.settings > .setting-container > .setting-value-controller):
2725         (.content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
2726
2727         * UserInterface/Views/SettingsTabContentView.js:
2728         (WebInspector.SettingsTabContentView):
2729         (WebInspector.SettingsTabContentView.tabInfo):
2730         (WebInspector.SettingsTabContentView.isEphemeral):
2731         (WebInspector.SettingsTabContentView.shouldSaveTab):
2732         (WebInspector.SettingsTabContentView.prototype.initialLayout):
2733         (WebInspector.SettingsTabContentView.isTabAllowed): Deleted.
2734         (WebInspector.SettingsTabContentView.prototype.get type): Deleted.
2735         Added logic to display an appropriate editor for each item in WebInspector.settings.
2736
2737         * UserInterface/Views/SourceCodeTextEditor.js:
2738         (WebInspector.SourceCodeTextEditor.prototype.close):
2739         Add call to super.close().
2740
2741         * UserInterface/Views/TabBar.css:
2742         (.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover):
2743         (.tab-bar > .item:not(.pinned) > .flex-space:last-child):
2744         (.tab-bar > .item.pinned > .icon):
2745         (.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover > .icon):
2746         (.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,): Deleted.
2747         (.tab-bar > .item > .flex-space:last-child): Deleted.
2748         (.tab-bar > .item.new-tab-button > .icon): Deleted.
2749         (.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover > .icon,): Deleted.
2750         Removed rules specifically targeting `.new-tab-button`.
2751
2752         * UserInterface/Views/TabBar.js:
2753         (WebInspector.TabBar):
2754         (WebInspector.TabBar.prototype.get newTabTabBarItem):
2755         (WebInspector.TabBar.prototype.updateNewTabTabBarItemState):
2756         (WebInspector.TabBar.prototype.insertTabBarItem):
2757         (WebInspector.TabBar.prototype.removeTabBarItem.animateTabs):
2758         (WebInspector.TabBar.prototype.removeTabBarItem):
2759         (WebInspector.TabBar.prototype.selectPreviousTab):
2760         (WebInspector.TabBar.prototype.selectNextTab):
2761         (WebInspector.TabBar.prototype.set selectedTabBarItem):
2762         (WebInspector.TabBar.prototype.hasNormalTab):
2763         (WebInspector.TabBar.prototype.layout):
2764         (WebInspector.TabBar.prototype._hasMoreThanOneNormalTab):
2765         (WebInspector.TabBar.prototype._handleMouseDown):
2766         (WebInspector.TabBar.prototype._handleMouseMoved):
2767         (WebInspector.TabBar.prototype._handleMouseLeave):
2768         (WebInspector.TabBar.prototype._handleNewTabClick):
2769         (WebInspector.TabBar.prototype._handleNewTabMouseEnter):
2770         (WebInspector.TabBar.prototype.get newTabItem): Deleted.
2771         (WebInspector.TabBar.prototype.set newTabItem): Deleted.
2772         Replaced the newTabItem setter by adding a saved pinned tab bar item (instead of relying
2773         upon a different object to give it the pinned tab bar item) that changes modes depending on
2774         whether a new tab is able to be created.
2775
2776         * UserInterface/Views/TabBarItem.js:
2777         (WebInspector.TabBarItem):
2778         (WebInspector.TabBarItem.prototype.get element):
2779         (WebInspector.TabBarItem.prototype.get representedObject):
2780         (WebInspector.TabBarItem.prototype.set representedObject):
2781         (WebInspector.TabBarItem.prototype.get parentTabBar):
2782         (WebInspector.TabBarItem.prototype.set parentTabBar):
2783         (WebInspector.TabBarItem.prototype.get image):
2784         (WebInspector.TabBarItem.prototype.set image):
2785         (WebInspector.TabBarItem.prototype.get title):
2786         (WebInspector.TabBarItem.prototype.set title):
2787         (WebInspector.TabBarItem.prototype.get pinned): Deleted.
2788         (WebInspector.TabBarItem.prototype._handleContextMenuEvent): Deleted.
2789         Split into GeneralTabBarItem and PinnedTabBarItem to simplify the logic of the DOM and allow
2790         for easier checking of whether a tab bar item is pinned or not.
2791
2792         * UserInterface/Views/TabBrowser.js:
2793         (WebInspector.TabBrowser):
2794         (WebInspector.TabBrowser.prototype.addTabForContentView):
2795         (WebInspector.TabBrowser.prototype.closeTabForContentView):
2796         (WebInspector.TabBrowser.prototype._tabBarItemSelected):
2797         (WebInspector.TabBrowser.prototype._tabBarItemRemoved):
2798         Replaced references to newTabItem with a set number (since each TabBar has a specific number
2799         of pinned tabs).
2800
2801         * UserInterface/Views/TextEditor.js:
2802         (WebInspector.TextEditor):
2803         (WebInspector.TextEditor.prototype.close):.
2804         Remove settings update event listeners to allow garbage collection.
2805
2806         (WebInspector.TextEditor.prototype._startWorkerPrettyPrint):
2807         (WebInspector.TextEditor.prototype._startCodeMirrorPrettyPrint):
2808         Now uses the settings values in WebInspector.setting for settings on the CodeMirror
2809         instance.  Also updates the CodeMirror instance if any setting changes.
2810
2811 2016-10-28  Joseph Pecoraro  <pecoraro@apple.com>
2812
2813         Web Inspector: Include parameter strings for native CustomElementRegistry methods in the console
2814         https://bugs.webkit.org/show_bug.cgi?id=164147
2815
2816         Reviewed by Brian Burg.
2817
2818         * UserInterface/Models/NativeFunctionParameters.js:
2819
2820 2016-10-28  Matt Baker  <mattbaker@apple.com>
2821
2822         Unreviewed, worker document images added
2823
2824         * UserInterface/Images/WorkerDocument.png: Added.
2825         * UserInterface/Images/WorkerDocument@2x.png: Added.
2826         * UserInterface/Images/WorkerDocumentLarge.png: Added.
2827         * UserInterface/Images/WorkerDocumentLarge@2x.png: Added.
2828
2829 2016-10-27  Devin Rousso  <dcrousso+webkit@gmail.com>
2830
2831         Web Inspector: Create general model object Collection class
2832         https://bugs.webkit.org/show_bug.cgi?id=163995
2833
2834         Reviewed by Joseph Pecoraro.
2835
2836         * UserInterface/Models/Collection.js: Added.
2837         (WebInspector.Collection):
2838         (WebInspector.Collection.prototype.get items):
2839         (WebInspector.Collection.prototype.get typeVerifier):
2840         (WebInspector.Collection.prototype.add):
2841         (WebInspector.Collection.prototype.remove):
2842         (WebInspector.Collection.prototype.clear):
2843         (WebInspector.Collection.prototype.toArray):
2844         (WebInspector.Collection.prototype.toJSON):
2845         (WebInspector.Collection.prototype.itemAdded):
2846         (WebInspector.Collection.prototype.itemRemoved):
2847         (WebInspector.Collection.prototype.itemsCleared):
2848         Class that holds multiple model objects.  It can be limited to a specific type by supplying
2849         a "typeVerifier", which is a function that accepts a single argument (the model object) and
2850         returns true/false depending on if that argument matches the "type" of the collection.
2851
2852         * UserInterface/Main.html:
2853         * UserInterface/Test.html:
2854         * UserInterface/Models/Frame.js:
2855         * UserInterface/Views/CookieStorageContentView.js:
2856         * UserInterface/Views/DebuggerSidebarPanel.js:
2857         * UserInterface/Views/FrameTreeElement.js:
2858         * UserInterface/Views/OpenResourceDialog.js:
2859         Add support for WebInspector.Collection.
2860         
2861         * UserInterface/Models/ResourceCollection.js:
2862         (WebInspector.ResourceCollection):
2863         (WebInspector.ResourceCollection.verifierForType):
2864         (WebInspector.ResourceCollection.prototype.resourceCollectionForType):
2865         (WebInspector.ResourceCollection.prototype.clear):
2866         (WebInspector.ResourceCollection.prototype.itemAdded):
2867         (WebInspector.ResourceCollection.prototype.itemRemoved):
2868         (WebInspector.ResourceCollection.prototype.itemsCleared):
2869         (WebInspector.ResourceCollection.prototype._associateWithResource):
2870         (WebInspector.ResourceCollection.prototype._disassociateWithResource):
2871         (WebInspector.ResourceCollection.prototype._resourceURLDidChange):
2872         (WebInspector.ResourceCollection.prototype._resourceTypeDidChange):
2873         (WebInspector.ResourceCollection.prototype.get resources): Deleted.
2874         (WebInspector.ResourceCollection.prototype.resourcesWithType): Deleted.
2875         (WebInspector.ResourceCollection.prototype.addResource): Deleted.
2876         (WebInspector.ResourceCollection.prototype.removeResource): Deleted.
2877         (WebInspector.ResourceCollection.prototype.removeAllResources): Deleted.
2878         Now a subclass of WebInspector.Collection.  Retrieving WebInspector.Resource objects by type
2879         and URL is still supported, but requesting by type now returns another instance of
2880         WebInspector.ResourceCollection that is configured to only accept the requested type.
2881
2882 2016-10-27  Joseph Pecoraro  <pecoraro@apple.com>
2883
2884         Web Inspector: Include ConsoleAgent in Workers - real console.log support
2885         https://bugs.webkit.org/show_bug.cgi?id=163844
2886         <rdar://problem/28903328>
2887
2888         Reviewed by Brian Burg.
2889
2890         * UserInterface/Protocol/Target.js:
2891         (WebInspector.Target.prototype.get ConsoleAgent):
2892         (WebInspector.Target.prototype._initializeNonMainTarget):
2893         * UserInterface/Protocol/Connection.js:
2894         (InspectorBackend.WorkerConnection):
2895         Add ConsoleAgent.
2896
2897         * UserInterface/Controllers/LogManager.js:
2898         (WebInspector.LogManager.prototype.messageWasAdded):
2899         (WebInspector.LogManager.prototype.requestClearMessages):
2900         Handle ConsoleAgent calls with multiple targets.
2901
2902         * UserInterface/Protocol/ConsoleObserver.js:
2903         (WebInspector.ConsoleObserver.prototype.messageAdded):
2904         Dispatch with the target in case we create Model objects.
2905
2906         * UserInterface/Controllers/WorkerManager.js:
2907         (WebInspector.WorkerManager.prototype.workerCreated):
2908         The frontend must now call "initialized" on Workers after
2909         sending our setup messages (enable, set breakpoints, etc).
2910
2911         * UserInterface/Protocol/RemoteObject.js:
2912         (WebInspector.RemoteObject.prototype.get target):
2913         Expose an accessor for tests.
2914
2915         * UserInterface/Protocol/LoggingProtocolTracer.js:
2916         (WebInspector.LoggingProtocolTracer.prototype._processEntry):
2917         Actually output the Exception, useful when debugging failures in tests.
2918
2919 2016-10-27  Joseph Pecoraro  <pecoraro@apple.com>
2920
2921         Web Inspector: Include RuntimeAgent in Workers - evaluate in Worker context
2922         https://bugs.webkit.org/show_bug.cgi?id=163835
2923         <rdar://problem/28901465>
2924
2925         Reviewed by Brian Burg.
2926
2927         This introduces the idea that the frontend may communication with multiple
2928         backend "Targets" which each have their own set of Agents.
2929
2930             - WebInspector.Target
2931               - has its own list of Agents
2932               - has a InspectorBackend.Connection to communicate with the backend
2933
2934             - WebInspector.mainTarget
2935               - always exists and represents the thing we are debugging (Page or JSContext)
2936
2937             - WebInspector.targets / WebInspector.targetManager
2938               - management of all Targets
2939               - create new Targets for Workers
2940
2941         This also slowly introduces the concept that Model objects may be tied to
2942         a specific Target:
2943
2944             - WebInspector.RemoteObject
2945               - in order to evaluate JS and interact with this object we must know the target (Page or Worker)
2946               - when fetching PropertyDescriptors and other RemoteObjects we must continue to pass on the target
2947
2948         Finally this makes the QuickConsole list Worker execution contexts in
2949         the context picker so that users can choose a Worker context and
2950         evaluate JavaScript in that context using the console.
2951
2952         * Localizations/en.lproj/localizedStrings.js:
2953         * UserInterface/Main.html:
2954         * UserInterface/Base/Main.js:
2955         (WebInspector.loaded):
2956         * UserInterface/Test.html:
2957         * UserInterface/Test/Test.js:
2958         (WebInspector.loaded):
2959         New files, strings, and managers.
2960         New global WebInspector.mainTarget.
2961         New convenience WebInspector.targets.
2962
2963         * UserInterface/Protocol/Target.js: Added.
2964         (WebInspector.Target):
2965         (WebInspector.Target.prototype.get RuntimeAgent):
2966         (WebInspector.Target.prototype.get name):
2967         (WebInspector.Target.prototype.get type):
2968         (WebInspector.Target.prototype.get connection):
2969         (WebInspector.Target.prototype.get executionContext):
2970         (WebInspector.Target.prototype.get displayName):
2971         (WebInspector.Target.prototype._intializeMainTarget):
2972         (WebInspector.Target.prototype._initializeNonMainTarget):
2973         Target has some basic properties.
2974
2975         * UserInterface/Controllers/TargetManager.js:
2976         (WebInspector.TargetManager):
2977         (WebInspector.TargetManager.prototype.get targets):
2978         (WebInspector.TargetManager.prototype.addTarget):
2979         (WebInspector.TargetManager.prototype.removeTarget):
2980         Holds the list of Targets and events when created / removed.
2981         Each target with a RuntimeAgent has an ExecutionContext.
2982
2983         * UserInterface/Controllers/WorkerManager.js:
2984         (WebInspector.WorkerManager):
2985         (WebInspector.WorkerManager.prototype.workerCreated):
2986         (WebInspector.WorkerManager.prototype.workerTerminated):
2987         (WebInspector.WorkerManager.prototype.dispatchMessageFromWorker):
2988         Create / remove / dispatch on a Worker Target.
2989
2990         * UserInterface/Protocol/InspectorBackend.js:
2991         (InspectorBackendClass):
2992         (InspectorBackendClass.prototype.registerCommand):
2993         (InspectorBackendClass.prototype.dispatch):
2994         (InspectorBackendClass.prototype.runAfterPendingDispatches):
2995         (InspectorBackendClass.prototype._agentForDomain):
2996         Keep the original implementations and just dispatch to the main connection.
2997
2998         (InspectorBackend.Agent):
2999         (InspectorBackend.Agent.prototype.get connection):
3000         (InspectorBackend.Agent.prototype.set connection):
3001         (InspectorBackend.Agent.prototype.get dispatcher):
3002         We will share Agent implementations but just give new "copies" a different
3003         connection and dispatcher.
3004
3005         (InspectorBackend.Command):
3006         (InspectorBackend.Command.create):
3007         (InspectorBackend.Command.prototype.invoke):
3008         (InspectorBackend.Command.prototype.supports):
3009         We continue to have a single Command instance on the Agent. However instead
3010         of using the hardcoded Agent on the Instance when evaluated as a function
3011         it uses the `this` object which should be an agent. This way:
3012
3013             target1.RuntimeAgent.evaluate
3014                 - `this` is target1 and we use the connection for that target
3015             target2.RuntimeAgent.evaluate
3016                 - `this` is target2 and we use the connection for that target
3017
3018         Unfortunately this breaks `RuntimeAgent.evaluate.invoke`. Currently this
3019         is solved by providing an extra parameter. In the case where we need to
3020         invoke on a particular agent we must provide the agent.
3021
3022             target.RuntimeAgent.evaluate.invoke({options}, target.RuntimeAgent)
3023
3024         This is unfortunate but only needed in a handful of places right now.
3025
3026         (InspectorBackendClass.prototype._sendCommandToBackendWithCallback): Deleted.
3027         (InspectorBackendClass.prototype._sendCommandToBackendExpectingPromise): Deleted.
3028         (InspectorBackendClass.prototype._sendMessageToBackend): Deleted.
3029         (InspectorBackendClass.prototype._dispatchResponse): Deleted.
3030         (InspectorBackendClass.prototype._dispatchResponseToCallback): Deleted.
3031         (InspectorBackendClass.prototype._dispatchResponseToPromise): Deleted.
3032         (InspectorBackendClass.prototype._dispatchEvent): Deleted.
3033         (InspectorBackendClass.prototype._flushPendingScripts): Deleted.
3034         (InspectorBackend.Agent.prototype.get currentDispatchState): Deleted.
3035         (InspectorBackend.Command.prototype.deliverFailure): Deleted.
3036         * UserInterface/Protocol/Connection.js: Added.
3037         (InspectorBackend.Connection):
3038         (InspectorBackend.Connection.prototype.get target):
3039         (InspectorBackend.Connection.prototype.set target):
3040         (InspectorBackend.Connection.prototype.dispatch):
3041         (InspectorBackend.Connection.prototype.runAfterPendingDispatches):
3042         (InspectorBackend.Connection.prototype.sendMessageToBackend):
3043         (InspectorBackend.Connection.prototype._dispatchResponse):
3044         (InspectorBackend.Connection.prototype._dispatchResponseToCallback):
3045         (InspectorBackend.Connection.prototype._dispatchResponseToPromise):
3046         (InspectorBackend.Connection.prototype._dispatchEvent):
3047         (InspectorBackend.Connection.prototype._sendCommandToBackendWithCallback):
3048         (InspectorBackend.Connection.prototype._sendCommandToBackendExpectingPromise):
3049         (InspectorBackend.Connection.prototype._sendMessageToBackend):
3050         (InspectorBackend.Connection.prototype._flushPendingScripts):
3051         This extracts the Connection details into its own class.
3052         Although we make it appear as though a Target has a list of
3053         Agents, we actually have the Connection hold the list of Agents.
3054         Instead of cloning the entire Agent we just create a new object
3055         extended from the original Agent instance. This allows us to keep
3056         the same interface but just change the connection / dispatcher
3057         properties within the Agent.
3058
3059         (InspectorBackend.MainConnection):
3060         (InspectorBackend.MainConnection.prototype.sendMessageToBackend):
3061         (InspectorBackend.WorkerConnection):
3062         (InspectorBackend.WorkerConnection.sendMessageToBackend):
3063         Two different kinds of connections. One for the Main connection
3064         and one for Workers. Currently the list of agents we expose
3065         on a Worker Target/Connection is hardcoded.
3066
3067         * UserInterface/Models/ExecutionContext.js:
3068         (WebInspector.ExecutionContext):
3069         (WebInspector.ExecutionContext.prototype.get target):
3070         We may now have ExecutionContexts that mean a Page, Frames, and Workers.
3071         To do this we include the (target, executionContextId) tuple in this object.
3072         With this we have everything we need to evaluate JavaScript.
3073
3074         * UserInterface/Controllers/RuntimeManager.js:
3075         (WebInspector.RuntimeManager):
3076         (WebInspector.RuntimeManager.prototype.get activeExecutionContext):
3077         (WebInspector.RuntimeManager.prototype.set activeExecutionContext):
3078         (WebInspector.RuntimeManager.prototype.get defaultExecutionContextIdentifier): Deleted.
3079         (WebInspector.RuntimeManager.prototype.set defaultExecutionContextIdentifier): Deleted.
3080         Update from contextId to a full ExecutionContext object.
3081
3082         (WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow.evalCallback):
3083         (WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
3084         (WebInspector.RuntimeManager.prototype.saveResult):
3085         (WebInspector.RuntimeManager.prototype.getPropertiesForRemoteObject):
3086         (WebInspector.RuntimeManager.prototype._frameExecutionContextsCleared):
3087         * UserInterface/Controllers/FrameResourceManager.js:
3088         (WebInspector.FrameResourceManager.prototype.executionContextCreated):
3089         * UserInterface/Controllers/JavaScriptLogViewController.js:
3090         (WebInspector.JavaScriptLogViewController.prototype.consolePromptShouldCommitText):
3091         * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
3092         Anywhere that wants to use the "activeExecutionContext" must use the
3093         specific RuntimeAgent tied to that ExecutionContext's Target.
3094
3095         * UserInterface/Models/PropertyDescriptor.js:
3096         (WebInspector.PropertyDescriptor.fromPayload):
3097         * UserInterface/Protocol/RemoteObject.js:
3098         (WebInspector.RemoteObject):
3099         (WebInspector.RemoteObject.createFakeRemoteObject):
3100         (WebInspector.RemoteObject.fromPrimitiveValue):
3101         (WebInspector.RemoteObject.fromPayload):
3102         (WebInspector.RemoteObject.prototype.getDisplayablePropertyDescriptors):
3103         (WebInspector.RemoteObject.prototype.deprecatedGetDisplayableProperties):
3104         (WebInspector.RemoteObject.prototype.setPropertyValue):
3105         (WebInspector.RemoteObject.prototype.getCollectionEntries):
3106         (WebInspector.RemoteObject.prototype.releaseWeakCollectionEntries):
3107         (WebInspector.RemoteObject.prototype.callFunction):
3108         (WebInspector.RemoteObject.prototype.callFunctionJSON):
3109         (WebInspector.RemoteObject.prototype.getOwnPropertyDescriptor.wrappedCallback):
3110         (WebInspector.RemoteObject.prototype.getOwnPropertyDescriptor):
3111         (WebInspector.RemoteObject.prototype.release):
3112         (WebInspector.RemoteObject.prototype._getPropertyDescriptors):
3113         (WebInspector.RemoteObject.prototype._getPropertyDescriptorsResolver):
3114         (WebInspector.RemoteObject.prototype._deprecatedGetProperties):
3115         RemoteObject and related Model Objects now must be tied to a specific
3116         Target, because we need to know which Target it belongs to in order to
3117         interact with it further.
3118
3119         * UserInterface/Views/QuickConsole.js:
3120         (WebInspector.QuickConsole):
3121         (WebInspector.QuickConsole.prototype.get selectedExecutionContext):
3122         (WebInspector.QuickConsole.prototype.set selectedExecutionContext):
3123         (WebInspector.QuickConsole.prototype._executionContextPathComponentsToDisplay):
3124         (WebInspector.QuickConsole.prototype._rebuildExecutionContextPathComponents):
3125         (WebInspector.QuickConsole.prototype._framePageExecutionContextsChanged):
3126         (WebInspector.QuickConsole.prototype._frameExecutionContextsCleared):
3127         (WebInspector.QuickConsole.prototype._createExecutionContextPathComponent):
3128         (WebInspector.QuickConsole.prototype._createExecutionContextPathComponentFromFrame):
3129         (WebInspector.QuickConsole.prototype._compareExecutionContextPathComponents):
3130         (WebInspector.QuickConsole.prototype._insertOtherExecutionContextPathComponent):
3131         (WebInspector.QuickConsole.prototype._removeOtherExecutionContextPathComponent):
3132         (WebInspector.QuickConsole.prototype._insertExecutionContextPathComponentForFrame):
3133         (WebInspector.QuickConsole.prototype._removeExecutionContextPathComponentForFrame):
3134         (WebInspector.QuickConsole.prototype._targetAdded):
3135         (WebInspector.QuickConsole.prototype._targetRemoved):
3136         (WebInspector.QuickConsole.prototype._pathComponentSelected):
3137         (WebInspector.QuickConsole.prototype.get selectedExecutionContextIdentifier): Deleted.
3138         (WebInspector.QuickConsole.prototype.set selectedExecutionContextIdentifier): Deleted.
3139         (WebInspector.QuickConsole.prototype._defaultExecutionContextChanged): Deleted.
3140         Update the code from executionContextId to ExecutionContext objects.
3141         Update the picker with ExecutionContextPathComponent for Workers (new Targets).
3142         Generalize and cleanup the code to make it easier to follow.
3143
3144 2016-10-27  Joseph Pecoraro  <pecoraro@apple.com>
3145
3146         Web Inspector: Introduce Page WorkerAgent and Worker InspectorController
3147         https://bugs.webkit.org/show_bug.cgi?id=163817
3148         <rdar://problem/28899063>
3149
3150         Reviewed by Brian Burg.
3151
3152         * UserInterface/Main.html:
3153         * UserInterface/Test.html:
3154         New files.
3155
3156         * UserInterface/Base/Main.js:
3157         (WebInspector.loaded):
3158         * UserInterface/Test/Test.js:
3159         (WebInspector.loaded):
3160         New Observers and Managers.
3161
3162         * UserInterface/Protocol/WorkerObserver.js: Added.
3163         (WebInspector.WorkerObserver.prototype.workerCreated):
3164         (WebInspector.WorkerObserver.prototype.workerTerminated):
3165         (WebInspector.WorkerObserver.prototype.dispatchMessageFromWorker):
3166         (WebInspector.WorkerObserver):
3167         * UserInterface/Controllers/WorkerManager.js: Added.
3168         (WebInspector.WorkerManager):
3169         (WebInspector.WorkerManager.prototype.workerCreated):
3170         (WebInspector.WorkerManager.prototype.workerTerminated):
3171         (WebInspector.WorkerManager.prototype.dispatchMessageFromWorker):
3172         To be implemented with the first Worker agent implementation
3173         when there is actually something we can do with the Worker.
3174
3175 2016-10-25  Joseph Pecoraro  <pecoraro@apple.com>
3176
3177         Web Inspector: Cmd-+ doesn't "zoom in" to increase text size in the Web Inspector
3178         https://bugs.webkit.org/show_bug.cgi?id=163961
3179         <rdar://problem/28895308>
3180
3181         Reviewed by Brian Burg.
3182
3183         * UserInterface/Base/Main.js:
3184         (WebInspector.contentLoaded):
3185         Add a duplicate set of keyboard shortcuts for the Shift variants.
3186
3187 2016-10-25  Joseph Pecoraro  <pecoraro@apple.com>
3188
3189         Web Inspector: Remove dead code in FrameTreeElement
3190         https://bugs.webkit.org/show_bug.cgi?id=163914
3191
3192         Reviewed by Brian Burg.
3193
3194         * UserInterface/Views/FrameTreeElement.js:
3195
3196 2016-10-24  Devin Rousso  <dcrousso+webkit@gmail.com>
3197
3198         Web Inspector: Scope chain shouldn't show empty Closure sections
3199         https://bugs.webkit.org/show_bug.cgi?id=152348
3200
3201         Reviewed by Joseph Pecoraro.
3202
3203         * UserInterface/Controllers/DebuggerManager.js:
3204         (WebInspector.DebuggerManager.prototype._scopeChainNodeFromPayload):
3205         * UserInterface/Models/ScopeChainNode.js:
3206         (WebInspector.ScopeChainNode):
3207         (WebInspector.ScopeChainNode.prototype.get empty):
3208         Added support for new empty property.
3209
3210         * UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
3211         (WebInspector.ScopeChainDetailsSidebarPanel.prototype._generateCallFramesSection):
3212         Only create and display a DetailsSection if the scope is not empty (via empty).
3213
3214 2016-10-24  Devin Rousso  <dcrousso+webkit@gmail.com>
3215
3216         Web Inspector: Improve Quick Open sorting algorithm
3217         https://bugs.webkit.org/show_bug.cgi?id=163705
3218
3219         Reviewed by Joseph Pecoraro.
3220
3221         * UserInterface/Models/ResourceQueryResult.js:
3222         (WebInspector.ResourceQueryResult.prototype._calculateRank.getMultiplier):
3223         (WebInspector.ResourceQueryResult.prototype._calculateRank):
3224         Added logic to multiply the ranking increment/decrement based on whether the current match
3225         is part of a sequence, whether that sequence began with a special character, and the length
3226         of the current sequence.
3227
3228 2016-10-19  Dean Jackson  <dino@apple.com>
3229
3230         Support CSS Shapes Level 1 without a prefix
3231         https://bugs.webkit.org/show_bug.cgi?id=163709
3232         <rdar://problem/28859369>
3233
3234         Reviewed by Myles Maxfield.
3235
3236         Replace -webkit-shape-outside with shape-outside.
3237
3238         * UserInterface/Models/CSSKeywordCompletions.js:
3239
3240 2016-10-19  Aaron Chu  <aaron_chu@apple.com>
3241
3242         Web Inspector: AXI: expose computed tree node and heading level
3243         https://bugs.webkit.org/show_bug.cgi?id=130825
3244         <rdar://problem/16442349>
3245
3246         Reviewed by Joseph Pecoraro.
3247
3248         Updating the Web Accessibility Inspector to display Heading Level and Hierarchical Level.
3249
3250         * Localizations/en.lproj/localizedStrings.js:
3251         * UserInterface/Models/DOMNode.js:
3252         (WebInspector.DOMNode.prototype.accessibilityProperties.accessibilityPropertiesCallback):
3253         (WebInspector.DOMNode.prototype.accessibilityProperties):
3254         * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
3255         (WebInspector.DOMNodeDetailsSidebarPanel):
3256         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility.accessibilityPropertiesCallback):
3257         (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility):
3258
3259 2016-10-18  Joseph Pecoraro  <pecoraro@apple.com>
3260
3261         Web Inspector: Styles Sidebar highlights "translate" but not "translateX"
3262         https://bugs.webkit.org/show_bug.cgi?id=163613
3263         <rdar://problem/28829610>
3264
3265         Reviewed by Timothy Hatcher.
3266
3267         * UserInterface/Models/CSSCompletions.js:
3268         (WebInspector.CSSCompletions.requestCSSCompletions):
3269         The hash table objects we pass to CodeMirror expects keys to be lowercased.
3270
3271 2016-10-18  Joseph Pecoraro  <pecoraro@apple.com>
3272
3273         Web Inspector: CSS Autocompletion sometimes adds extra unexpected characters
3274         https://bugs.webkit.org/show_bug.cgi?id=163612
3275         <rdar://problem/28829557>
3276
3277         Reviewed by Timothy Hatcher.
3278
3279         * UserInterface/Controllers/CodeMirrorCompletionController.js:
3280         (WebInspector.CodeMirrorCompletionController.prototype._generateCSSCompletions):
3281         Better handle completions in cases where we are in the middle of a property
3282         to avoid orphaned characters, or at the end of a function name to avoid creating
3283         duplicate parenthesis.
3284
3285 2016-10-18  Joseph Pecoraro  <pecoraro@apple.com>
3286
3287         REGRESSION(r201171): Web Inspector: Timeline Recording playhead should always start immediately, not wait until first event
3288         https://bugs.webkit.org/show_bug.cgi?id=163583
3289         <rdar://problem/28815882>
3290
3291      &