blob: c10b45b4df24b430c322ecd3df4f9610cb30b8c9 [file] [log] [blame]
2017-12-19 Brian Burg <bburg@apple.com>
Web Inspector: InspectorTest.evaluateInPage should return a rejection if an error was thrown
https://bugs.webkit.org/show_bug.cgi?id=180956
Reviewed by Joseph Pecoraro.
* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness.prototype.evaluateInPage.translateResult): Renamed.
(FrontendTestHarness.prototype.evaluateInPage):
If the result was thrown, then reject with the error.
Rename the helper method to match the same one in RemoteObject.prototype.fetchProperties.
2017-12-19 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Table - Redesign the waterfall popover showing timing data
https://bugs.webkit.org/show_bug.cgi?id=180996
<rdar://problem/34072542>
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New strings and files.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
(WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
Use the ResourceTimingBreakdownView with a fixed width size.
* UserInterface/Views/ResourceTimingContentView.css: Removed.
* UserInterface/Views/ResourceTimingContentView.js:
(WI.ResourceTimingContentView.prototype.initialLayout):
(WI.ResourceTimingContentView.prototype._refreshTimingSection):
(WI.ResourceTimingContentView.prototype._refreshTimingSection.createBlock): Deleted.
(WI.ResourceTimingContentView.prototype._refreshTimingSection.createTimeLabel): Deleted.
(WI.ResourceTimingContentView.prototype._refreshTimingSection.createRow): Deleted.
Use the ResourceTimingBreakdownView with a flexible size.
Also changed the loading indicator and empty message to match
normal ContentView loading indicator and message only UI.
* UserInterface/Views/ResourceTimingBreakdownView.css:
(.waterfall-popover .resource-timing-breakdown):
(.resource-timing-breakdown > table > tr > td.label):
(.resource-timing-breakdown > table > tr > td.graph):
(.resource-timing-breakdown > table > tr > td.time):
(.resource-timing-breakdown > table > tr.empty):
(.resource-timing-breakdown > table > tr.header:not(.total-row) > td):
(.resource-timing-breakdown > table hr):
(.resource-timing-breakdown .waterfall .block):
(.resource-timing-breakdown): Deleted.
(.resource-timing-breakdown > .waterfall): Deleted.
(.resource-timing-breakdown > .waterfall .block): Deleted.
(.resource-timing-breakdown ul): Deleted.
(.resource-timing-breakdown ul > li): Deleted.
(.resource-timing-breakdown ul > li > .row-label): Deleted.
(body[dir=ltr] .resource-timing-breakdown ul > li > .row-label): Deleted.
(body[dir=rtl] .resource-timing-breakdown ul > li > .row-label): Deleted.
(.resource-timing-breakdown ul > li > .section-label): Deleted.
(.resource-timing-breakdown ul > li > .time-label): Deleted.
(.resource-timing-breakdown .time-section): Deleted.
(.resource-timing-breakdown ul > li > .time-section > .label): Deleted.
(.resource-timing-breakdown ul > li.total .block): Deleted.
(.resource-timing-breakdown ul > li.total .time-label): Deleted.
* UserInterface/Views/ResourceTimingBreakdownView.js:
(WI.ResourceTimingBreakdownView):
(WI.ResourceTimingBreakdownView.prototype._appendEmptyRow):
(WI.ResourceTimingBreakdownView.prototype._appendHeaderRow):
(WI.ResourceTimingBreakdownView.prototype._appendRow):
(WI.ResourceTimingBreakdownView.prototype.initialLayout):
(WI.ResourceTimingBreakdownView.prototype.initialLayout.createBlock): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.createSectionLabel): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.createTimeLabel): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.createTimeSection): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.createRow): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.emptyRow): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.appendGraphRow): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.appendEmptyRow): Deleted.
(WI.ResourceTimingBreakdownView.prototype.initialLayout.getCurrentSectionMetrics): Deleted.
Redesign the breakdown view.
2017-12-19 Brian Burg <bburg@apple.com>
Web Inspector: InspectorTest.expectException does not handle implicitly resolved async functions correctly
https://bugs.webkit.org/show_bug.cgi?id=180944
Reviewed by Joseph Pecoraro.
* UserInterface/Test/TestHarness.js:
(TestHarness.prototype.expectException):
Don't chain .catch after we might have just returned a rejected promise.
2017-12-19 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Table - Update the Time column to include the total duration not just the download duration
https://bugs.webkit.org/show_bug.cgi?id=180998
<rdar://problem/36140424>
Reviewed by Matt Baker.
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.get totalDuration):
(WI.Resource.prototype.get duration): Deleted.
Rename and group getters to be clearer.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._entryForResource):
Use the totalDuration for the network table time column.
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar graphDataSource.get secondsPerPixel):
Using the download duration was incorrect here.
2017-12-19 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Styles Redesign: Typing semicolon at the end of value should move to the next property
https://bugs.webkit.org/show_bug.cgi?id=178498
<rdar://problem/35065995>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetStypeProperty.js:
(WI.SpreadsheetStypeProperty.prototype._update):
(WI.SpreadsheetStypeProperty.prototype._handleValueBeforeInput):
Only move to the next property if there are no unbalanced quotes. For example, adding a
semicolon after `url("foo` or `url('bar` would not move to the next property.
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype.valueWithoutSuggestion):
(WI.SpreadsheetTextField.prototype.completionSuggestionsSelectedCompletion):
(WI.SpreadsheetTextField.prototype.completionSuggestionsClickedCompletion):
(WI.SpreadsheetTextField.prototype._handleKeyDownForSuggestionView):
(WI.SpreadsheetTextField.prototype._updateCompletions):
(WI.SpreadsheetTextField.prototype._getPrefix): Deleted.
2017-12-18 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: Command-S should save changes in matching CSS resource
https://bugs.webkit.org/show_bug.cgi?id=180900
Reviewed by Timothy Hatcher.
When focused on a CSS selector, property name or value, pressing Command-S should save
the CSS resource to the file system.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._save):
2017-12-18 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Styles Redesign: add inline swatch for CSS variables
https://bugs.webkit.org/show_bug.cgi?id=180798
Reviewed by Timothy Hatcher.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.updateStatus):
(WI.SpreadsheetStyleProperty.prototype._renderValue):
(WI.SpreadsheetStyleProperty.prototype._addVariableTokens):
2017-12-18 Devin Rousso <webkit@devinrousso.com>
Web Inspector: recording view and slider have jumbled layout at narrow widths
https://bugs.webkit.org/show_bug.cgi?id=180597
<rdar://problem/35939904>
Reviewed by Timothy Hatcher.
* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording > header > .slider-container):
(.content-view:not(.tab).recording > header > .slider-container > *):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]):
2017-12-18 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas tab: placeholder/help text wrapping looks poor at narrow widths
https://bugs.webkit.org/show_bug.cgi?id=180943
<rdar://problem/36114431>
Reviewed by Timothy Hatcher.
* UserInterface/Views/ContentView.css:
(.content-view > .message-text-view > .description):
* UserInterface/Views/Main.css:
(.message-text-view .navigation-item-help):
(.message-text-view .navigation-item-help .navigation-bar):
(.message-text-view .navigation-item-help .navigation-bar > .item):
2017-12-18 Devin Rousso <webkit@devinrousso.com>
REGRESSION (r225569): Web Inspector: Commented out properties aren't properly highlighted
https://bugs.webkit.org/show_bug.cgi?id=180687
Reviewed by Timothy Hatcher.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property:not(.disabled) .name):
(.spreadsheet-style-declaration-editor .property:not(.disabled) .value):
(.spreadsheet-style-declaration-editor .property.disabled):
(.spreadsheet-style-declaration-editor .name): Deleted.
(.spreadsheet-style-declaration-editor .value): Deleted.
(.spreadsheet-style-declaration-editor .property.disabled, .spreadsheet-style-declaration-editor .property.disabled > *): Deleted.
2017-12-18 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - waterfall graph can be mis-sized after closing detail view
https://bugs.webkit.org/show_bug.cgi?id=180903
<rdar://problem/36087903>
Reviewed by Matt Baker.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._hideResourceDetailView):
Redraw waterfall column after hiding the detail view.
2017-12-15 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r225941.
This change introduced LayoutTest crashes and assertion
failures.
Reverted changeset:
"Web Inspector: replace HTMLCanvasElement with
CanvasRenderingContext for instrumentation logic"
https://bugs.webkit.org/show_bug.cgi?id=180770
https://trac.webkit.org/changeset/225941
2017-12-15 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab should be turned on by default
https://bugs.webkit.org/show_bug.cgi?id=180594
<rdar://problem/35938917>
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WI.loaded):
2017-12-15 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: clicking above selector should prepend new property
https://bugs.webkit.org/show_bug.cgi?id=180628
<rdar://problem/35954570>
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property):
(.spreadsheet-style-declaration-editor .property-toggle):
(.spreadsheet-style-declaration-editor .property.has-warning .warning):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration):
(.spreadsheet-css-declaration :matches(.header, .header-media)):
(.spreadsheet-css-declaration :matches(.header, .header-media):first-child):
When header-media element is present, header element should have padding-top set to 0.
(.spreadsheet-css-declaration .header.editing-selector .origin):
(.spreadsheet-css-declaration .close-brace):
2017-12-14 David Kilzer <ddkilzer@apple.com>
Enable -Wstrict-prototypes for WebKit
<https://webkit.org/b/180757>
<rdar://problem/36024132>
Rubber-stamped by Joseph Pecoraro.
* Configurations/Base.xcconfig:
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.
2017-12-14 Brian Burg <bburg@apple.com>
Web Inspector: InspectorTest.evaluateInPage should unwrap primitive values by default
https://bugs.webkit.org/show_bug.cgi?id=180831
Reviewed by Joseph Pecoraro.
* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness.prototype.evaluateInPage.resultObjectToReturn):
(FrontendTestHarness.prototype.evaluateInPage):
Unwrap the resulting RemoteObject's value if it is a primitive.
Add an `options` dictionary so this behavior can be opted out.
* UserInterface/Test/TestHarness.js:
Add documentation of how evaluateInPage works.
2017-12-14 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: selecting text should not add new properties
https://bugs.webkit.org/show_bug.cgi?id=180797
<rdar://problem/36039751>
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
2017-12-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: replace HTMLCanvasElement with CanvasRenderingContext for instrumentation logic
https://bugs.webkit.org/show_bug.cgi?id=180770
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.prototype.get contextType):
(WI.Canvas.prototype.saveIdentityToCookie):
(WI.Canvas.prototype.get frame): Deleted.
2017-12-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - URL filter should be case-insensitive like filter bars in other tabs
https://bugs.webkit.org/show_bug.cgi?id=180824
<rdar://problem/35910750>
Reviewed by Brian Burg.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype._resetFilters):
(WI.NetworkTableContentView.prototype._urlFilterDidChange):
Use a case-insensitive regex created from the search query
and use that when filtering resources.
(WI.NetworkTableContentView.prototype._checkURLFilterAgainstFinishedResource): Deleted.
(WI.NetworkTableContentView.prototype._checkURLFilterAgainstResource):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
Rename the helper for checking the URL filter.
2017-12-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: UncaughtExceptionReporter fails on early errors
https://bugs.webkit.org/show_bug.cgi?id=180776
Reviewed by Brian Burg.
* UserInterface/Debug/UncaughtExceptionReporter.js:
(urlLastPathComponent):
(handleError):
(handleUncaughtException):
URLUtilities parseURL might not be available, so have a small
helper for getting a good name from a URL / filename.
(handleUncaughtExceptionRecord):
(dismissErrorSheet):
Wrap `WI` namespace accesses in a try/catch since `WI` might not be available.
Safely check global variables there were `Foo` as `window.Foo` to avoid errors
if they are not actually available.
2017-12-13 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Make text filter just a URL filter and update incrementally
https://bugs.webkit.org/show_bug.cgi?id=180796
Reviewed by Brian Burg.
Revert the Network Tab's text filter back to being just a URL filter with the
normal behaviors of our other text filters that update as you type (incremental).
This also renames the "text filter" to "url filter" everywhere in the ContentView
for clarity. A follow-up change will make the url filter be case-insensitive
to fully match the filter bars in other tabs.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get filterNavigationItems):
(WI.NetworkTableContentView.prototype._checkURLFilterAgainstFinishedResource):
(WI.NetworkTableContentView.prototype._updateURLFilterActiveIndicator):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
(WI.NetworkTableContentView.prototype._hasURLFilter):
(WI.NetworkTableContentView.prototype._hasActiveFilter):
(WI.NetworkTableContentView.prototype._passURLFilter):
(WI.NetworkTableContentView.prototype._passFilter):
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._resetFilters):
(WI.NetworkTableContentView.prototype._urlFilterDidChange):
(WI.NetworkTableContentView.prototype._checkTextFilterAgainstFinishedResource): Deleted.
(WI.NetworkTableContentView.prototype._checkTextFilterAgainstFailedResource): Deleted.
(WI.NetworkTableContentView.prototype._updateTextFilterActiveIndicator): Deleted.
(WI.NetworkTableContentView.prototype._hasTextFilter): Deleted.
(WI.NetworkTableContentView.prototype._passTextFilter): Deleted.
(WI.NetworkTableContentView.prototype._textFilterDidChange): Deleted.
2017-12-13 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION: Web Inspector: Opening inspector crashes page if there are empty resources
https://bugs.webkit.org/show_bug.cgi?id=180787
<rdar://problem/35934838>
Reviewed by Brian Burg.
* UserInterface/Test/TestUtilities.js:
Add a generic sanitizeURL used by many tests.
* UserInterface/TestStub.html:
Include TestUtilities.
2017-12-13 Devin Rousso <webkit@devinrousso.com>
Web Inspector: add instrumentation for ImageBitmapRenderingContext
https://bugs.webkit.org/show_bug.cgi?id=180736
Reviewed by Joseph Pecoraro.
* UserInterface/Base/ImageUtilities.js:
(WI.ImageUtilities.promisifyLoad):
(WI.ImageUtilities.imageFromImageBitmap):
* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):
* UserInterface/Models/NativeFunctionParameters.js:
* UserInterface/Models/Recording.js:
(WI.Recording.displayNameForSwizzleType):
(WI.Recording.prototype.async swizzle):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._generateDOM):
(WI.RecordingActionTreeElement._generateDOM.createParameterElement):
2017-12-12 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: navigating away from empty value should remove CSS property
https://bugs.webkit.org/show_bug.cgi?id=180508
Reviewed by Devin Rousso.
Remove a property when navigating away from it (e.g. to the next/previous property,
or outside of the styles panel entirely) and either its name or value is empty:
color: [ ]->
<-[ ]: red
<-[color]:
Don't remove a property when navigating from an empty value to a non-empty name:
color: <-[ ]
Always remove a property when both name and value are empty.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._handleBlur):
(WI.SpreadsheetTextField.prototype.get valueBeforeEditing): Deleted.
2017-12-12 Brian Burg <bburg@apple.com>
Web Inspector: support async setup() and async teardown() in AsyncTestSuite
https://bugs.webkit.org/show_bug.cgi?id=180626
Reviewed by Timothy Hatcher.
This can make some code simpler by removing Promise-related boilerplate. I'm splitting
this patch from the new use-site in the interest of making it easier to review.
* UserInterface/Test/TestSuite.js:
(AsyncTestSuite.prototype.runTestCases):
(AsyncTestSuite):
2017-12-12 Brian Burg <bburg@apple.com>
Web Inspector: SyncTestSuite should complain if passed an async setup/test/teardown function
https://bugs.webkit.org/show_bug.cgi?id=180717
Reviewed by Devin Rousso.
* UserInterface/Test/TestSuite.js:
(SyncTestSuite.prototype.addTestCase):
Raise an exception if test/setup/teardown is an async function. It won't work.
2017-12-12 Brian Burg <bburg@apple.com>
Web Inspector: add InspectorTest.expectException() and use it
https://bugs.webkit.org/show_bug.cgi?id=180719
Reviewed by Matt Baker.
This helps straighten out async test() functions that need
to test exceptional cases. Without this, every such method
needs try/catch boilerplate to leak the error outside the
scope of the catch-block and then assert that it exists.
* UserInterface/Test/TestHarness.js:
(TestHarness.prototype.expectException):
Added. This method takes a callback which is expected to raise
an exception either by throwing an Error instance or returning
a Promise that rejects with an Error instance. The method returns
a Promise that is either resolved with the expected exception
from one of the above sources, or is rejected with the non-exception
result that was returned or resolved by the callback.
2017-12-12 Michael Catanzaro <mcatanzaro@igalia.com>
Don't require perl(File::Copy::Recursive)
https://bugs.webkit.org/show_bug.cgi?id=180479
<rdar://problem/35944218>
Reviewed by Daniel Bates.
Fix the error handling. I added this at the last moment and failed to test. The logic is
inverted, causing an error to always be reported on success.
Add a missing 'mkdir -p' using File::Path::make_path. This has its own built-in error
reporting, so no need to add our own.
* Scripts/copy-user-interface-resources.pl:
(ditto):
2017-12-12 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, don't print empty error message when copying resource fails
Unsurprisingly, when system() fails, there is not any useful error to be printed, so don't.
* Scripts/copy-user-interface-resources.pl:
(ditto):
2017-12-08 Joseph Pecoraro <pecoraro@apple.com>
ServiceWorker Inspector: Various issues inspecting service worker on mobile.twitter.com
https://bugs.webkit.org/show_bug.cgi?id=180520
<rdar://problem/35900764>
Reviewed by Brian Burg.
* UserInterface/Main.html:
* UserInterface/Test.html:
New files.
* UserInterface/Controllers/SourceMapManager.js:
(WI.SourceMapManager.prototype._loadAndParseSourceMap):
* UserInterface/Models/SourceMapResource.js:
(WI.SourceMapResource.prototype.requestContentFromBackend):
A ServiceWorker inspector doesn't have a main frame, fall back to an
empty frameIdentifier, it is ignored by the Service Worker network agent.
* UserInterface/Base/Main.js:
Handle a Service Worker inspector where there is no frame. This can
search the main resource's resource collection.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype.scriptDidParse):
* UserInterface/Controllers/FrameResourceManager.js:
(WI.FrameResourceManager.prototype.resourceRequestDidFailLoading):
In Service Workers the resources won't have a parent frame.
(WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
(WI.FrameResourceManager.prototype._processServiceWorkerInitializationInfo):
In service worker initialization fallback to using the script content
as the main resource if we didn't get a Script that actually includes it.
* UserInterface/Models/LocalScript.js:
(WI.LocalScript):
(WI.LocalScript.prototype.requestContentFromBackend):
A way to create a local Script with content.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.get _supportsDebugging):
Disallow breakpoints in a LocalScript since we have no way to tell the
backend where to set breakpoints.
* UserInterface/Models/TextRange.js:
(WI.TextRange.fromText):
Add a way to get a TextRange from static text.
2017-12-08 Michael Catanzaro <mcatanzaro@igalia.com>
Don't require perl(File::Copy::Recursive)
https://bugs.webkit.org/show_bug.cgi?id=180479
Reviewed by Konstantin Tokarev.
If File::Copy::Recursive is not installed, there is currently a Darwin
fallback to the ditto command. That doesn't exist on Linux, but we can
emulate it by running 'cp -R' on everything in the source directory.
This should probably work everywhere except Windows.
* Scripts/copy-user-interface-resources.pl:
(ditto):
2017-12-07 Eric Carlson <eric.carlson@apple.com>
Simplify log channel configuration UI
https://bugs.webkit.org/show_bug.cgi?id=180527
<rdar://problem/35908382>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/LoggingChannel.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
2017-12-07 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r225634.
This caused layout tests to time out.
Reverted changeset:
"Simplify log channel configuration UI"
https://bugs.webkit.org/show_bug.cgi?id=180527
https://trac.webkit.org/changeset/225634
2017-12-07 Eric Carlson <eric.carlson@apple.com>
Simplify log channel configuration UI
https://bugs.webkit.org/show_bug.cgi?id=180527
<rdar://problem/35908382>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/LoggingChannel.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
2017-12-06 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas: spurious warnings shown for commands that changed pixel contents
https://bugs.webkit.org/show_bug.cgi?id=180505
<rdar://problem/35891651>
Reviewed by Brian Burg.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.apply.getContent):
(WI.RecordingAction.prototype.apply):
2017-12-06 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Style Redesign: filtering removes header if one rule has no match even if others do
https://bugs.webkit.org/show_bug.cgi?id=180467
Reviewed by Timothy Hatcher.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.applyFilter):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):
2017-12-06 Matt Baker <mattbaker@apple.com>
Web Inspector: Details section headers overlap Classes container in the Computed Styles panel
https://bugs.webkit.org/show_bug.cgi?id=180380
Reviewed by Timothy Hatcher.
* UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
(.sidebar > .panel.details.css-style > .content ~ :matches(.options-container, .class-list-container)):
2017-12-06 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas Tab initial user experience is poor when no canvases exist
https://bugs.webkit.org/show_bug.cgi?id=179329
<rdar://problem/35842036>
Reviewed by Timothy Hatcher.
This patch adds a new method, WI.createNavigationItemHelp, for creating command
help to display in a message text view. The method accepts a format string and
NavigationItem, and returns a DOM element. For example,
WI.createNavigationItemHelp("Press %s to do X.", navigationItem)
returns:
<div class="navigation-item-help">
Press <div class="navigation-bar"><div class="item">...</div></div> to do X.
</div>
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.importRecording):
Importing a recording should be a manager command with a corresponding
event, so that it's decoupled from any specific location in the UI.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype._recordingImportedOrStopped):
(WI.CanvasTabContentView.prototype._recordingStopped): Deleted.
(WI.CanvasTabContentView.prototype._navigationSidebarImport): Deleted.
* UserInterface/Views/Main.css:
(.message-text-view .navigation-item-help):
(.message-text-view .navigation-item-help .navigation-bar):
(.message-text-view .navigation-item-help .navigation-bar > .item):
New styles for a NavigationItem appearing inline as part of descriptive
text. Wrapped in a fake navigation bar so navigation item styles are picked up.
* UserInterface/Views/RecordingNavigationSidebarPanel.js:
(WI.RecordingNavigationSidebarPanel.prototype.initialLayout):
(WI.RecordingNavigationSidebarPanel.prototype._importNavigationItemClicked): Deleted.
Moved import code to CanvasManager.
2017-12-06 Devin Rousso <webkit@devinrousso.com>
Web Inspector: REGRESSION(r225569): CSSStyleDetailsSidebarPanel no longer exists
https://bugs.webkit.org/show_bug.cgi?id=180466
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.applyFilter):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleEditorFilterApplied):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.applyFilter):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.applyFilter):
2017-12-06 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Styles Redesign: display related pseudo-elements
https://bugs.webkit.org/show_bug.cgi?id=176187
<rdar://problem/34194917>
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.applyFilter):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
(.spreadsheet-style-panel .section-header):
(.spreadsheet-style-panel .section-header .node-link):
(.spreadsheet-style-panel .section-header .node-link:hover):
(.spreadsheet-style-panel .section-inherited): Deleted.
(.spreadsheet-style-panel .section-inherited .node-link): Deleted.
(.spreadsheet-style-panel .section-inherited .node-link:hover): Deleted.
After all of the matched and inherited styles are added, loop over each pseudo-element, get
the DOMNodeStyles for each, refresh them if needed, and then add the header and sections.
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype.refreshIfNeeded):
(WI.DOMNodeStyles.prototype.refresh):
Return a reference to the DOMNodeStyles object once the refresh promise is resolved.
* UserInterface/Models/DOMNode.js:
(WI.DOMNode.prototype.get displayName):
If the node is a pseudo-element, display the pseudo-type instead of the node name.
2017-12-06 Devin Rousso <webkit@devinrousso.com>
Web Inspector: [PARITY] Styles Redesign: Ability to add new style rules
https://bugs.webkit.org/show_bug.cgi?id=178329
<rdar://problem/35001005>
Reviewed by Timothy Hatcher.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.newRuleButtonClicked):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.newRuleButtonContextMenu):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype._addNewRule):
Implement the two functions that CSSStyleDetailsSidebarPanel expects to exist in order for
the selected panel to support adding a new rule.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.startEditingRuleSelector):
If the _selectorElement has not been created yet, set a flag and focus it once layout() has
been called (thereby ensuring that initialLayout() has been called).
2017-12-05 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Styles Redesign: for newly added properties, pressing delete in empty value field should focus on name field
https://bugs.webkit.org/show_bug.cgi?id=179831
<rdar://problem/35626976>
Reviewed by Timothy Hatcher.
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._handleKeyDown):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBackspace):
2017-12-05 Devin Rousso <webkit@devinrousso.com>
Web Inspector: [PARITY] Styles Redesign: Make filtering work
https://bugs.webkit.org/show_bug.cgi?id=178331
<rdar://problem/35001015>
Reviewed by Timothy Hatcher.
Since both the sections and editors (per-section) use View semantics, we cannot simply
search for instances of the filtered text since not all of the subviews may have called
layout() yet. Instead, we have to rely on event listeners to relay information as to whether
the filtered text was matched up the chain, applying the correct style classes along the way.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.applyFilter):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.filterDidChange):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):
Save the "Inherited From" elements so that they can be hidden if no styles inherited from
that node match the filter.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.applyFilter):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._createMediaHeader):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleEditorFilterApplied):
Save the media header elements so that they can also be filtered.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.applyFilter):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.applyFilter):
(WI.SpreadsheetStyleProperty.prototype._update):
Move the name and value elements to a new container so that filter highlight won't also
apply to the checkbox or warning element.
2017-12-05 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: adding a property before or after the first one appends it to the end
https://bugs.webkit.org/show_bug.cgi?id=180321
<rdar://problem/35816402>
Reviewed by Timothy Hatcher.
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration.prototype._rangeAfterPropertyAtIndex):
* UserInterface/Models/TextRange.js:
(WI.TextRange.prototype.collapseToStart):
2017-12-05 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Empty Message View in Network Tab has padding at top
https://bugs.webkit.org/show_bug.cgi?id=180453
Reviewed by Matt Baker.
* UserInterface/Views/NetworkTableContentView.css:
(.content-view.network .message-text-view): Deleted.
2017-12-05 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: make Computed a top-level sidebar tab
https://bugs.webkit.org/show_bug.cgi?id=174229
<rdar://problem/33170193>
Reviewed by Matt Baker.
Styles dropdown tab selector was removed. Styles and Computed are now top-level sidebar tabs.
Visual styles is no longer visible in the Styles sidebar tabs by default but can be enabled in the settings.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Main.html:
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WI.CSSStyleDeclarationSection.prototype.findMatchingPropertiesAndSelectors):
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WI.CSSStyleDeclarationTextEditor.prototype.findMatchingProperties):
(WI.CSSStyleDeclarationTextEditor.prototype.removeNonMatchingProperties):
* UserInterface/Views/ComputedStyleDetailsSidebarPanel.js: Added.
(WI.ComputedStyleDetailsSidebarPanel):
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype._ondragover):
(WI.DOMTreeOutline.prototype._ondrop):
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.css: Renamed from Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.css.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js: Renamed from Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js.
(WI.GeneralStyleDetailsSidebarPanel):
(WI.GeneralStyleDetailsSidebarPanel.prototype.get panel):
(WI.GeneralStyleDetailsSidebarPanel.prototype.visibilityDidChange):
(WI.GeneralStyleDetailsSidebarPanel.prototype.computedStyleDetailsPanelShowProperty):
(WI.GeneralStyleDetailsSidebarPanel.prototype.layout):
(WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout):
(WI.GeneralStyleDetailsSidebarPanel.prototype.sizeDidChange):
(WI.GeneralStyleDetailsSidebarPanel.prototype.get _initialScrollOffset):
(WI.GeneralStyleDetailsSidebarPanel.prototype._updateNoForcedPseudoClassesScrollOffset):
(WI.GeneralStyleDetailsSidebarPanel.prototype._showPanel):
(WI.GeneralStyleDetailsSidebarPanel.prototype._newRuleButtonClicked):
(WI.GeneralStyleDetailsSidebarPanel.prototype._newRuleButtonContextMenu):
(WI.GeneralStyleDetailsSidebarPanel.prototype._populateClassToggles):
(WI.GeneralStyleDetailsSidebarPanel.prototype._createToggleForClassName):
(WI.GeneralStyleDetailsSidebarPanel.prototype._filterDidChange):
Styles and Computed tabs share a few UI components, such as force state (:hover, :focus, etc.),
filter field, and CSS class toggle components. To implement this, CSSStyleDetailsSidebarPanel was renamed
to GeneralStyleDetailsSidebarPanel.
CSSStyleDetailsSidebarPanel used to support several panels. This is no longer the case with GeneralStyleDetailsSidebarPanel:
- _initiallySelectedPanel was removed.
- _selectedPanel was replaced by _panel.
* UserInterface/Views/GroupNavigationItem.js:
(WI.GroupNavigationItem.prototype.get minimumWidth):
* UserInterface/Views/NavigationBar.css:
(.navigation-bar .item,):
(.sidebar-navigation-bar):
(.sidebar-navigation-bar .holder):
* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype._calculateMinimumWidth):
Minor optimization: don't toggle class names when there are no visible navigation items.
* UserInterface/Views/RulesStyleDetailsPanel.js:
(WI.RulesStyleDetailsPanel.prototype.filterDidChange):
* UserInterface/Views/RulesStyleDetailsSidebarPanel.js: Copied from Source/WebInspectorUI/UserInterface/Views/NavigationBar.css.
(WI.RulesStyleDetailsSidebarPanel):
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Views/Sidebar.js:
(WI.Sidebar):
* UserInterface/Views/SidebarNavigationBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/NavigationBar.css.
(WI.SidebarNavigationBar):
(WI.SidebarNavigationBar.prototype.insertNavigationItem):
(WI.SidebarNavigationBar.prototype._calculateMinimumWidth):
SidebarNavigationBar wraps navigation items in an element so it can correctly calculate the width of all items with spacing between them.
* UserInterface/Views/StyleDetailsPanel.js:
(WI.StyleDetailsPanel.prototype.get _initialScrollOffset):
* UserInterface/Views/VisualStyleDetailsSidebarPanel.js: Copied from Source/WebInspectorUI/UserInterface/Views/NavigationBar.css.
(WI.VisualStyleDetailsSidebarPanel):
2017-12-05 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: content views for resources loaded through XHR do not reflect declared mime-type
https://bugs.webkit.org/show_bug.cgi?id=141389
<rdar://problem/19767070>
Reviewed by Brian Burg.
* UserInterface/Base/Utilities.js:
Blob <-> Text conversion helpers.
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.createObjectURL):
Previously all Image resources were assumed to have base64Encoded data
which we automatically convert to a Blob. Now that some image data
can be transfered as text, convert that to a Blob here since the output
is expected to be a Blob.
* UserInterface/Views/ResourceContentView.js:
(WI.ResourceContentView.prototype.showGenericNoContentMessage):
* UserInterface/Views/TextResourceContentView.js:
(WI.TextResourceContentView.prototype.contentAvailable):
(WI.TextResourceContentView.prototype._contentDidPopulate):
* UserInterface/Views/ImageResourceContentView.js:
(WI.ImageResourceContentView.prototype.contentAvailable):
Better handle no content cases.
* UserInterface/Views/ResourceClusterContentView.js:
(WI.ResourceClusterContentView.prototype.get responseContentView):
(WI.ResourceClusterContentView.prototype._contentViewForResourceType):
Make a best effort to find a good ContentView to show the resource data.
This is done by looking at the ResourceType and MIME Type.
* UserInterface/Views/SVGImageResourceClusterContentView.js:
(WI.SVGImageResourceClusterContentView.prototype._showContentViewForIdentifier):
Handle if image data is now text (the image/svg+xml case).
2017-12-05 Simon Fraser <simon.fraser@apple.com>
Remove webkitGetImageDataHD and webkitPutImageDataHD from canvas API
https://bugs.webkit.org/show_bug.cgi?id=180387
Reviewed by Dean Jackson.
CanvasRenderingContext2D.webkitGetImageDataHD and webkitPutImageDataHD were never standardized,
and Blink removed support in 2014 (https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/FOPH5dloGG8).
Since our canvas backing store is always 1x, they have no use anyway, so remove them.
* UserInterface/Models/NativeFunctionParameters.js:
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.getImageParameters):
(WI.RecordingAction):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._classNameForAction.classNameForActionName):
(WI.RecordingActionTreeElement._classNameForAction):
2017-12-04 Devin Rousso <webkit@devinrousso.com>
Web Inspector: provide method for recording CanvasRenderingContext2D from JavaScript
https://bugs.webkit.org/show_bug.cgi?id=175166
<rdar://problem/34040740>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.recordingFinished):
If a `name` is sent with the payload, use it as the suggested name.
* UserInterface/Models/NativeFunctionParameters.js:
Add `console.record` and `console.recordEnd`.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.showRepresentedObject):
Drive-by: remove logic that toggled the collapsed state of the navigation sidebar, as this
was not very controllable by the user and often was aggravating.
(WI.CanvasTabContentView.prototype._recordingStopped):
Only show the recording if it was not started from the console. This can determined by
CanvasManager when it recieves a recording if the recording's source is not the same as the
current canvas being recorded.
2017-12-04 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas Tab initial user interface needs some polish
https://bugs.webkit.org/show_bug.cgi?id=179330
<rdar://problem/35367581>
Reviewed by Joseph Pecoraro.
Update the Canvas overview placeholder text and prevent appearance of
the vertical scrollbar when no canvases exist. This patch also includes
a bunch of cleanup of code that creates content placeholder text throughout
the UI, and makes sure all text is styled consistently.
* Localizations/en.lproj/localizedStrings.js:
Updated Canvas overview message text.
* UserInterface/Base/Main.js:
Make the "message text view" a container with child message element, instead
of a simple element with text content. This makes it simpler to customize
the message (by adding buttons, more text, etc).
* UserInterface/Views/CanvasDetailsSidebarPanel.css:
(.sidebar > .panel.details.canvas .details-section.canvas-extensions .content > ul):
(.sidebar > .panel.details.canvas > .content > .empty-content-placeholder): Deleted.
(.sidebar > .panel.details.canvas > .content > .empty-content-placeholder > .message): Deleted.
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
Customize the content placeholder to include a description beneath
the "No Canvas Contexts" message.
* UserInterface/Views/CollectionContentView.css:
(.content-view.collection):
Change overflow-y to auto, to prevent scrollbar from appearing when
"Show scroll bars" system preference is enabled on macOS.
* UserInterface/Views/CollectionContentView.js:
Add support for custom content placeholders.
(WI.CollectionContentView):
(WI.CollectionContentView.prototype._showContentPlaceholder):
(WI.CollectionContentView.prototype._hideContentPlaceholder):
* UserInterface/Views/ContentView.css:
(.content-view > .message-text-view):
(.content-view > .message-text-view > .message):
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger > .content):
(.sidebar > .panel.navigation.debugger > :matches(.content, .empty-content-placeholder)): Deleted.
* UserInterface/Views/DetailsSection.css:
(.details-section > .content > .group > .row > .message-text-view):
* UserInterface/Views/Main.css:
(.message-text-view):
(.message-text-view > .message):
(.message-text-view.error):
* UserInterface/Views/NavigationSidebarPanel.css:
(.sidebar > .panel.navigation > .overflow-shadow):
(.sidebar > .panel.navigation > .content .empty-content-placeholder): Deleted.
(.sidebar > .panel.navigation > .content > .empty-content-placeholder): Deleted.
(.sidebar > .panel.navigation > .content .empty-content-placeholder > .message): Deleted.
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.showEmptyContentPlaceholder):
(WI.NavigationSidebarPanel.prototype._createEmptyContentPlaceholderIfNeeded):
* UserInterface/Views/NetworkTableContentView.css:
(.content-view.network .message-text-view):
(.content-view.network .message-text-view > .message):
Workaround to prevent "No Filter Results" message from being styled like
"full width" messages displayed in ContentViews (large, bold font).
This is needed because the placeholder message element is a immediate child
of the network content view, rather than the network table.
(.content-view.network .empty-content-placeholder): Deleted.
(body[dir=ltr] .content-view.network .empty-content-placeholder): Deleted.
(body[dir=rtl] .content-view.network .empty-content-placeholder): Deleted.
(.content-view.network .empty-content-placeholder > .message): Deleted.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._showEmptyFilterResultsMessage):
* UserInterface/Views/RecordingNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.recording > .content):
(.sidebar > .panel.navigation.recording > :matches(.content, .empty-content-placeholder)): Deleted.
* UserInterface/Views/ResourceSidebarPanel.css:
(.sidebar > .panel.navigation.resource > .content):
(.sidebar > .panel.navigation.resource > :matches(.content, .empty-content-placeholder)): Deleted.
* UserInterface/Views/RulesStyleDetailsPanel.css:
(.sidebar > .panel.details.css-style > .content > .rules > .message-text-view):
(.sidebar > .panel.details.css-style > .content > .rules:not(.filter-non-matching) > .message-text-view):
(.sidebar > .panel.details.css-style > .content > .rules:not(.filter-non-matching) > .no-filter-results): Deleted.
(.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules.filter-non-matching > .no-filter-results): Deleted.
(.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules.filter-non-matching > .no-filter-results > .no-filter-results-message): Deleted.
* UserInterface/Views/RulesStyleDetailsPanel.js:
(WI.RulesStyleDetailsPanel):
* UserInterface/Views/SearchSidebarPanel.css:
(.sidebar > .panel.navigation.search > :matches(.content, .message-text-view)):
(.sidebar > .panel.navigation.search.changed > :matches(.content, .message-text-view)):
(.sidebar > .panel.navigation.search > :matches(.content, .empty-content-placeholder)): Deleted.
(.sidebar > .panel.navigation.search.changed > :matches(.content, .empty-content-placeholder)): Deleted.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel):
* UserInterface/Views/StorageSidebarPanel.css:
(.sidebar > .panel.navigation.storage > .content):
(.sidebar > .panel.navigation.storage > :matches(.content, .empty-content-placeholder)): Deleted.
* UserInterface/Views/Variables.css:
(:root):
2017-11-29 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: can't add new property after property without trailing semicolon
https://bugs.webkit.org/show_bug.cgi?id=179587
<rdar://problem/35490858>
Reviewed by Timothy Hatcher.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype._updateOwnerStyleText):
(WI.CSSProperty.prototype._appendSemicolonIfNeeded):
Add a semicolon before the new property if the last property doesn't have it already.
2017-11-29 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Console Tab navigation bar sometimes does not include filter bar, clear console sometimes does not work
https://bugs.webkit.org/show_bug.cgi?id=180124
<rdar://problem/35740353>
Reviewed by Brian Burg.
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype.closed):
Avoid removing event listeners if this LogContentView singleton is ever closed.
The singleton will always be alive so we don't want to remove the event listeners
without a way to add them back.
* UserInterface/Base/Main.js:
(WI.showSplitConsole):
* UserInterface/Views/ConsoleTabContentView.js:
(WI.ConsoleTabContentView.prototype.shown):
When showing the ConsoleTab immediately collapse the split console so that any
following code that checks WI.isShowingSplitConsole will get the expected value.
It is also now possible to share a ContentView across ContentBrowsers via
tombstones, so remove the old code that would frequently close the LogContentView.
2017-11-28 Devin Rousso <webkit@devinrousso.com>
Web Inspector: remove extra space before call frames in Canvas backtraces
https://bugs.webkit.org/show_bug.cgi?id=180129
Reviewed by Matt Baker.
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
* UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
(WI.RecordingTraceDetailsSidebarPanel):
Hide the disclosure buttons of these TreeOutlines as they don't have children.
2017-11-28 Matt Baker <mattbaker@apple.com>
Web Inspector: Clean up backtrace in Canvas details sidebar
https://bugs.webkit.org/show_bug.cgi?id=179807
<rdar://problem/35604378>
Reviewed by Devin Rousso.
* UserInterface/Controllers/CallFrameTreeController.js: Added.
Display a list of call frames in a tree outline. Browse to the represented
call frame's source code location when a tree element is clicked or selected.
(WI.CallFrameTreeController):
(WI.CallFrameTreeController.prototype.get treeOutline):
(WI.CallFrameTreeController.prototype.get callFrames):
(WI.CallFrameTreeController.prototype.set callFrames):
(WI.CallFrameTreeController.prototype.disconnect):
(WI.CallFrameTreeController.prototype._treeElementClicked):
(WI.CallFrameTreeController.prototype._treeSelectionDidChange):
(WI.CallFrameTreeController.prototype._showSourceCodeLocation):
* UserInterface/Main.html:
* UserInterface/Views/CanvasDetailsSidebarPanel.css:
(.sidebar > .panel.details.canvas .details-section.canvas-backtrace .call-frame): Deleted.
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
(WI.CanvasDetailsSidebarPanel.prototype._refreshBacktraceSection):
* UserInterface/Views/RecordingTraceDetailsSidebarPanel.css:
(.sidebar > .panel.details.recording-trace > .content > .call-frame): Deleted.
* UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
(WI.RecordingTraceDetailsSidebarPanel):
(WI.RecordingTraceDetailsSidebarPanel.prototype.updateAction):
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.treeElementToggled):
(WI.TreeElement.prototype.selectOnMouseDown):
Prevent selection if parent tree outline is not selectable.
* UserInterface/Views/TreeOutline.css:
(.tree-outline.non-selectable .item:hover):
* UserInterface/Views/TreeOutline.js:
Add `selectable` behavior, set at construction time. When false,
clicking a tree element dispatches an event instead of selecting
the tree element. Default true.
(WI.TreeOutline):
(WI.TreeOutline.prototype.get selectable):
Dispatch click event when not selectable, and some drive-by cleanup.
2017-11-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Move console Preserve Log setting from Setting tab to Console navigation bar
https://bugs.webkit.org/show_bug.cgi?id=180125
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/LogContentView.js:
(WI.LogContentView):
(WI.LogContentView.prototype.get navigationItems):
(WI.LogContentView.prototype._clearLogOnNavigateSettingChanged):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
2017-11-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove Network "Clear on load" from Settings tab now that Network tab has a toggle for it
https://bugs.webkit.org/show_bug.cgi?id=180123
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
2017-11-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Add a toggle in the network tab to control automatically clearing or preserving log across loads
https://bugs.webkit.org/show_bug.cgi?id=180110
<rdar://problem/34071789>
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
New strings.
* UserInterface/Views/CheckboxNavigationItem.css:
(.navigation-bar .item.checkbox input[type=checkbox]):
Tweak style to more center the checkbox vertically.
* UserInterface/Views/CheckboxNavigationItem.js:
(WI.CheckboxNavigationItem):
Fix setting the initial value of a checkbox navigation item.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get navigationItems):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype._clearNetworkOnNavigateSettingChanged):
Add a new checkbox for the clear on navigation setting.
* UserInterface/Views/SettingEditor.js:
(WI.SettingEditor.createForSetting):
Update the editor checkbox if the setting changes outside of the setting editor.
* UserInterface/Views/NavigationItem.js:
(WI.NavigationItem.prototype.get tooltip):
(WI.NavigationItem.prototype.set tooltip):
* UserInterface/Views/ActivateButtonNavigationItem.js:
(WI.ActivateButtonNavigationItem.prototype.set activated):
* UserInterface/Views/ButtonNavigationItem.js:
(WI.ButtonNavigationItem):
(WI.ButtonNavigationItem.prototype.get toolTip): Deleted.
(WI.ButtonNavigationItem.prototype.set toolTip): Deleted.
* UserInterface/Views/ToggleButtonNavigationItem.js:
(WI.ToggleButtonNavigationItem.prototype.set alternateToolTip):
(WI.ToggleButtonNavigationItem.prototype.set toggled):
Move tooltip to the base class and rename it from `toolTip` to `tooltip` to
match existing generic places like TreeElement.
2017-11-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include Beacon loads in the Network Table's "Other" filter
https://bugs.webkit.org/show_bug.cgi?id=180113
Reviewed by Matt Baker.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
Ensure the Other filter will handle any type that hasn't already been handled.
2017-11-28 Joseph Pecoraro <pecoraro@apple.com>
ServiceWorker Inspector: Frontend changes to support Network tab and sub resources
https://bugs.webkit.org/show_bug.cgi?id=179642
<rdar://problem/35517704>
Reviewed by Brian Burg.
This patch makes use of the NetworkAgent and ServiceWorker agents in the frontend
for a ServiceWorker inspection target. It also makes changes to ensure that the
subresources requested by a ServiceWorker appear as expected in both the Resources
and Network Tabs.
The backends of ServiceWorkers and DedicatedWorkers for network requests are
different, but we want the presentation to be very similiar. Ultimately we'd like
to move to more similiar backends if possible.
The first (after Inspector.enable) message a ServiceWorker inspector sends to the
backend is ServiceWorker.getInitializationInfo. This parallels a Page inspector
sending Page.getResourceTree. From the response we get enough information to
setup the MainTarget with enough information (targetId, URL) to know what its main
resource URL will be. Like DedicatedWorkers, the target's main resource will be
filled in with the first WI.Script matching the URL. With this initialization
message alone the ServiceWorker Target behaves almost identically to a Worker
target and Network loads associated with the target (by targetId) are added as
sub-resources as expected.
The biggest tension in this patch is within FrameResourceManager. The class, as
its name indicates, assumes page resources with Frames, navigation, and loader
semantics. It takes a few modifications to make it better handle resources not
associated with a Page. A follow-up will rename this to just ResourceManager as
the class' main task is now to associate Resources with Targets.
* UserInterface/Base/Main.js:
(WI.loaded):
There are assumptions in a few places that the main target is a Page. Those
places can now be reached when the main target is a ServiceWorker. Add a
convenience WI.pageTarget that can be used in these places.
* UserInterface/Test/Test.js:
(WI.loaded):
Add pageTarget.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype.scriptDidParse):
Generalize the condition so the main target can have its main resource populated.
This will be the case when a ServiceWorker is the main target and its main resource
needs to be populated from a Script.
* UserInterface/Controllers/FrameResourceManager.js:
(WI.FrameResourceManager):
(WI.FrameResourceManager.prototype._processServiceWorkerInitializationInfo):
Handle ServiceWorker Resource initialization which is different from Page initialization.
(WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
(WI.FrameResourceManager.prototype._addResourceToTarget):
(WI.FrameResourceManager.prototype._addFrameTreeFromFrameResourceTreePayload):
Eliminate PageAgent, which might not be available in some targets.
Use pageTarget instead of mainTarget where appropriate.
* UserInterface/Controllers/TargetManager.js:
(WI.TargetManager.prototype.targetForIdentifier):
A ServiceWorker is the first time that the main target has an identifier,
so let TargetManager find it by target id.
* UserInterface/Models/Resource.js:
(WI.Resource):
(WI.Resource.resolvedType):
(WI.Resource.prototype.updateForResponse):
For Resource.Type.Other resources include a better type inferred from the MIME type.
ServiceWorker loads currently don't have type information and this provides a great
type for such loads. This should also provide nice types for CacheStorage.add*
populated resources which are otherwise type-less fetches.
* UserInterface/Protocol/Connection.js:
Rename the class since this may no longer be a "Page".
* UserInterface/Protocol/MainTarget.js:
(WI.MainTarget):
(WI.MainTarget.mainConnectionInfo):
(WI.MainTarget.prototype.get mainResource):
(WI.MainTarget.prototype.set mainResource):
(WI.MainTarget.prototype.get displayName): Deleted.
* UserInterface/Protocol/Target.js:
(WI.Target.prototype.set identifier):
(WI.Target.prototype.set name):
(WI.Target.prototype.get mainResource):
(WI.Target.prototype.set mainResource):
(WI.Target.prototype.get displayName):
Give richer types for the main target. And allow a few things to be initialized
lazily, which will be necessary from an initialization message.
* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView.isTabAllowed):
Remove a PageAgent requirement for the Network tab. A ServiceWorker will not
have a PageAgent, but it will have a NetworkAgent, which should be good enough.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateWithInitialResourcesIfNeeded):
Initial populate should populate all subresources of all targets.
* UserInterface/Views/ResourceContentView.js:
(WI.ResourceContentView.prototype.contentAvailable):
This was getting used by ResourceType.Other without warning. Make it warn.
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype._addScript):
(WI.ResourceSidebarPanel.prototype._addTargetWithMainResource):
* UserInterface/Views/ScriptTreeElement.js:
(WI.ScriptTreeElement):
Allow WorkerTreeElements for ServiceWorker targets which may also be the main target.
Also when adding such a tree element, promote the resource sidebar to a full tree
outline, and stop hiding disclosure buttons.
2017-11-27 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: selector's field shadow is clipped at the bottom
https://bugs.webkit.org/show_bug.cgi?id=179961
Reviewed by Matt Baker.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration .selector):
2017-11-21 Tomas Popela <tpopela@redhat.com>
Unreviewed compile warning fix
WARNING: console.assert inside control flow statement without braces on line: 130487:
console.assert(this._loggingChannelSources.includes(channel.source));
* UserInterface/Controllers/LogManager.js:
(WI.LogManager):
2017-11-18 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Update the Trash / Clear icon
https://bugs.webkit.org/show_bug.cgi?id=179850
Reviewed by Matt Baker.
* UserInterface/Images/NavigationItemTrash.svg:
Update the icon.
* UserInterface/Views/ProbeDetailsSidebarPanel.css:
(.sidebar > .panel.probes > .navigation-bar .item.clear-samples):
* UserInterface/Views/ProbeSetDetailsSection.js:
(WI.ProbeSetDetailsSection):
* UserInterface/Views/ScopeChainDetailsSidebarPanel.css:
(.scope-chain .navigation-bar .item.clear-watch-expressions):
* UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
(WI.ScopeChainDetailsSidebarPanel):
Resize to 15x15 and move it down a pixel.
2017-11-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Add HAR Export button
https://bugs.webkit.org/show_bug.cgi?id=179570
<rdar://problem/35484918>
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
New strings.
* UserInterface/Images/Export.svg: Added.
* UserInterface/Images/Import.svg: Added.
Add symmetric import/export buttons.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
Expose the save keyboard shortcut so we can show its display name in a tooltip.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get navigationItems):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.layout):
(WI.NetworkTableContentView.prototype._updateExportButton):
Include the export button and enable/disable it when appropriate.
(WI.NetworkTableContentView.prototype.closed):
Add a missing event listener removal.
2017-11-17 Matt Baker <mattbaker@apple.com>
Web Inspector: Disabled ImageAndText-style buttons should have gray text
https://bugs.webkit.org/show_bug.cgi?id=179843
<rdar://problem/35624337>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ButtonNavigationItem.css:
(.navigation-bar .item.button.disabled.image-and-text,):
(.navigation-bar .item.button.disabled > .glyph): Deleted.
2017-11-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Update Ignore Caches button
https://bugs.webkit.org/show_bug.cgi?id=179841
Reviewed by Matt Baker.
* UserInterface/Images/IgnoreCaches.svg:
This changes from an arrow over a cache to a slash through a cache.
2017-11-17 Matt Baker <mattbaker@apple.com>
Web Inspector: Remove WI.instanceForClass
https://bugs.webkit.org/show_bug.cgi?id=179746
Reviewed by Timothy Hatcher.
The implementations of DetailsSidebarPanel subclasses assume that panels
are closed and released when no longer needed. Keeping them alive with
instanceForClass isn't the right choice, since sidebar panels remove their
event listeners when closed.
* UserInterface/Base/Main.js:
(WI.instanceForClass): Deleted.
* UserInterface/Views/DebuggerTabContentView.js:
(WI.DebuggerTabContentView.prototype.showDetailsSidebarPanels):
* UserInterface/Views/TabContentView.js:
(WI.TabContentView.prototype.get detailsSidebarPanels):
2017-11-17 Matt Baker <mattbaker@apple.com>
Web Inspector: ButtonNavigationItem should support image and text button style
https://bugs.webkit.org/show_bug.cgi?id=179625
<rdar://problem/35512238>
Reviewed by Joseph Pecoraro.
* UserInterface/Main.html:
* UserInterface/Views/ButtonNavigationItem.css:
(.navigation-bar .item.button):
(.navigation-bar .item.button.image-only):
(.navigation-bar .item.button.image-and-text):
(.navigation-bar .item.button.image-and-text > span):
(.navigation-bar .item.button.text-only):
(.navigation-bar .item.button.text-only.checkbox): Deleted.
(.navigation-bar .item.button.text-only.checkbox label): Deleted.
Checkbox styles have been moved to a separate CSS file.
* UserInterface/Views/ButtonNavigationItem.js:
Add backing data members for the image and label, allowing the DOM
representation of the button to change as needed.
(WI.ButtonNavigationItem):
Remove duplicate role logic. The base class sets the role.
(WI.ButtonNavigationItem.prototype.set label):
(WI.ButtonNavigationItem.prototype.set image):
(WI.ButtonNavigationItem.prototype.get buttonStyle):
(WI.ButtonNavigationItem.prototype.set buttonStyle):
(WI.ButtonNavigationItem.prototype.get additionalClassNames):
(WI.ButtonNavigationItem.prototype._mouseClicked):
(WI.ButtonNavigationItem.prototype._update):
(WI.ButtonNavigationItem.prototype.updateButtonText): Deleted.
* UserInterface/Views/CheckboxNavigationItem.css: Added.
(.navigation-bar .item.checkbox):
(.navigation-bar .item.checkbox label):
* UserInterface/Views/CheckboxNavigationItem.js:
Change base class to NavigationItem, since this item lacks an image
and makes use of an actual label element instead of a span for its text.
(WI.CheckboxNavigationItem):
(WI.CheckboxNavigationItem.prototype._checkboxChanged):
(WI.CheckboxNavigationItem.prototype.updateButtonText): Deleted.
2017-11-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove FIXMEs for GTK+ missing icons
https://bugs.webkit.org/show_bug.cgi?id=155282
<rdar://problem/25076615>
Reviewed by Michael Catanzaro.
* UserInterface/Views/PathComponentIcons.css:
(.source-icon .icon):
(body:not(.mac-platform, .windows-platform) .heap-snapshot-record .icon,): Deleted.
* UserInterface/Views/ResourceIcons.css:
(.large .resource-icon.resource-type-websocket .icon):
(body:not(.mac-platform, .windows-platform) .resource-icon.resource-type-ping .icon,): Deleted.
(body:not(.mac-platform, .windows-platform) .large .resource-icon.resource-type-ping .icon,): Deleted.
All ports now share the same images.
2017-11-15 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: typing colon in property name should advance to value field
https://bugs.webkit.org/show_bug.cgi?id=178795
<rdar://problem/35174674>
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._update):
(WI.SpreadsheetStyleProperty.prototype._handleNameBeforeInput):
Unlike pressing Tab or Enter, typing ":" in the property name should discard suggestion hint.
(WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
We use 250ms debounce before updating this._property.name.
When typing "font-f:", we want to discard suggestion hint (i.e. "font-family"),
and immediately show autocomplete for "font-f" (in this case, invalid property).
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField):
(WI.SpreadsheetTextField.prototype.stopEditing):
(WI.SpreadsheetTextField.prototype.discardCompletion):
Call spreadsheetTextFieldDidChange when discarding non-empty suggestion hint.
(WI.SpreadsheetTextField.prototype.detached):
(WI.SpreadsheetTextField.prototype.completionSuggestionsClickedCompletion):
(WI.SpreadsheetTextField.prototype._handleBlur):
(WI.SpreadsheetTextField.prototype._handleKeyDownForSuggestionView):
(WI.SpreadsheetTextField.prototype._updateCompletions):
(WI.SpreadsheetTextField.prototype._applyCompletionHint):
(WI.SpreadsheetTextField.prototype._hideCompletions): Deleted.
2017-11-15 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r217750): Navigation sidebar broken after closing and re-opening tab
https://bugs.webkit.org/show_bug.cgi?id=179717
<rdar://problem/35551541>
Reviewed by Devin Rousso.
NavigationSidebarPanels should not be created with WI.instanceForClass.
* UserInterface/Views/DebuggerSidebarPanel.js:
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel):
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel):
* UserInterface/Views/StorageSidebarPanel.js:
(WI.StorageSidebarPanel):
* UserInterface/Views/TabContentView.js:
(WI.TabContentView.prototype.get navigationSidebarPanel):
2017-11-15 Michael Catanzaro <mcatanzaro@igalia.com>
Remove GTK web inspector images
https://bugs.webkit.org/show_bug.cgi?id=179716
Reviewed by Carlos Garcia Campos.
* Scripts/copy-user-interface-resources.pl:
* UserInterface/Images/gtk/AUTHORS: Removed.
* UserInterface/Images/gtk/ActiveCallFrame.svg: Removed.
* UserInterface/Images/gtk/AnimationPlayStatePaused.svg: Removed.
* UserInterface/Images/gtk/AnimationPlayStateRunning.svg: Removed.
* UserInterface/Images/gtk/ApplicationCache.png: Removed.
* UserInterface/Images/gtk/ApplicationCache@2x.png: Removed.
* UserInterface/Images/gtk/ApplicationCacheManifest.png: Removed.
* UserInterface/Images/gtk/ApplicationCacheManifest@2x.png: Removed.
* UserInterface/Images/gtk/ArrowUp.svg: Removed.
* UserInterface/Images/gtk/Assertion.svg: Removed.
* UserInterface/Images/gtk/BackForwardArrows.svg: Removed.
* UserInterface/Images/gtk/Breakpoint.png: Removed.
* UserInterface/Images/gtk/Breakpoint@2x.png: Removed.
* UserInterface/Images/gtk/BreakpointButton.svg: Removed.
* UserInterface/Images/gtk/BreakpointInactive.png: Removed.
* UserInterface/Images/gtk/BreakpointInactive@2x.png: Removed.
* UserInterface/Images/gtk/BreakpointInactiveButton.svg: Removed.
* UserInterface/Images/gtk/Breakpoints.svg: Removed.
* UserInterface/Images/gtk/COPYING: Removed.
* UserInterface/Images/gtk/COPYING_CCBYSA3: Removed.
* UserInterface/Images/gtk/COPYING_LGPL2: Removed.
* UserInterface/Images/gtk/CSSVariable.svg: Removed.
* UserInterface/Images/gtk/CallTrees.svg: Removed.
* UserInterface/Images/gtk/Canvas.svg: Removed.
* UserInterface/Images/gtk/Canvas2D.svg: Removed.
* UserInterface/Images/gtk/Canvas3D.svg: Removed.
* UserInterface/Images/gtk/CanvasOverview.svg: Removed.
* UserInterface/Images/gtk/Checkers.svg: Removed.
* UserInterface/Images/gtk/Circle.svg: Removed.
* UserInterface/Images/gtk/ClearBoth.svg: Removed.
* UserInterface/Images/gtk/ClearLeft.svg: Removed.
* UserInterface/Images/gtk/ClearRight.svg: Removed.
* UserInterface/Images/gtk/ClippingCSS.png: Removed.
* UserInterface/Images/gtk/ClippingCSS@2x.png: Removed.
* UserInterface/Images/gtk/ClippingCSSLarge.png: Removed.
* UserInterface/Images/gtk/ClippingCSSLarge@2x.png: Removed.
* UserInterface/Images/gtk/ClippingGeneric.png: Removed.
* UserInterface/Images/gtk/ClippingGeneric@2x.png: Removed.
* UserInterface/Images/gtk/ClippingGenericLarge.png: Removed.
* UserInterface/Images/gtk/ClippingGenericLarge@2x.png: Removed.
* UserInterface/Images/gtk/ClippingJS.png: Removed.
* UserInterface/Images/gtk/ClippingJS@2x.png: Removed.
* UserInterface/Images/gtk/ClippingJSLarge.png: Removed.
* UserInterface/Images/gtk/ClippingJSLarge@2x.png: Removed.
* UserInterface/Images/gtk/Close.svg: Removed.
* UserInterface/Images/gtk/CloseLarge.svg: Removed.
* UserInterface/Images/gtk/CloseWhite.svg: Removed.
* UserInterface/Images/gtk/ColorIcon.png: Removed.
* UserInterface/Images/gtk/ColorIcon@2x.png: Removed.
* UserInterface/Images/gtk/Console.svg: Removed.
* UserInterface/Images/gtk/Cookie.png: Removed.
* UserInterface/Images/gtk/Cookie@2x.png: Removed.
* UserInterface/Images/gtk/Crosshair.svg: Removed.
* UserInterface/Images/gtk/CubicBezier.svg: Removed.
* UserInterface/Images/gtk/DOMBreakpoint.svg: Removed.
* UserInterface/Images/gtk/DOMCharacterData.svg: Removed.
* UserInterface/Images/gtk/DOMComment.svg: Removed.
* UserInterface/Images/gtk/DOMDocument.svg: Removed.
* UserInterface/Images/gtk/DOMDocumentType.svg: Removed.
* UserInterface/Images/gtk/DOMElement.svg: Removed.
* UserInterface/Images/gtk/DOMNode.svg: Removed.
* UserInterface/Images/gtk/DOMTextNode.svg: Removed.
* UserInterface/Images/gtk/Database.png: Removed.
* UserInterface/Images/gtk/Database@2x.png: Removed.
* UserInterface/Images/gtk/DatabaseTable.png: Removed.
* UserInterface/Images/gtk/DatabaseTable@2x.png: Removed.
* UserInterface/Images/gtk/Debug.svg: Removed.
* UserInterface/Images/gtk/Debugger.svg: Removed.
* UserInterface/Images/gtk/DisclosureTriangles.svg: Removed.
* UserInterface/Images/gtk/DockBottom.svg: Removed.
* UserInterface/Images/gtk/DockLeft.svg: Removed.
* UserInterface/Images/gtk/DockRight.svg: Removed.
* UserInterface/Images/gtk/DocumentCSS.png: Removed.
* UserInterface/Images/gtk/DocumentCSS@2x.png: Removed.
* UserInterface/Images/gtk/DocumentCSSLarge.png: Removed.
* UserInterface/Images/gtk/DocumentCSSLarge@2x.png: Removed.
* UserInterface/Images/gtk/DocumentFont.png: Removed.
* UserInterface/Images/gtk/DocumentFont@2x.png: Removed.
* UserInterface/Images/gtk/DocumentFontLarge.png: Removed.
* UserInterface/Images/gtk/DocumentFontLarge@2x.png: Removed.
* UserInterface/Images/gtk/DocumentGeneric.png: Removed.
* UserInterface/Images/gtk/DocumentGeneric@2x.png: Removed.
* UserInterface/Images/gtk/DocumentGenericLarge.png: Removed.
* UserInterface/Images/gtk/DocumentGenericLarge@2x.png: Removed.
* UserInterface/Images/gtk/DocumentImage.png: Removed.
* UserInterface/Images/gtk/DocumentImage@2x.png: Removed.
* UserInterface/Images/gtk/DocumentImageLarge.png: Removed.
* UserInterface/Images/gtk/DocumentImageLarge@2x.png: Removed.
* UserInterface/Images/gtk/DocumentJS.png: Removed.
* UserInterface/Images/gtk/DocumentJS@2x.png: Removed.
* UserInterface/Images/gtk/DocumentJSLarge.png: Removed.
* UserInterface/Images/gtk/DocumentJSLarge@2x.png: Removed.
* UserInterface/Images/gtk/DocumentMarkup.png: Removed.
* UserInterface/Images/gtk/DocumentMarkup@2x.png: Removed.
* UserInterface/Images/gtk/DocumentMarkupLarge.png: Removed.
* UserInterface/Images/gtk/DocumentMarkupLarge@2x.png: Removed.
* UserInterface/Images/gtk/DownloadArrow.svg: Removed.
* UserInterface/Images/gtk/Elements.svg: Removed.
* UserInterface/Images/gtk/Error.svg: Removed.
* UserInterface/Images/gtk/Errors.svg: Removed.
* UserInterface/Images/gtk/ErrorsEnabled.svg: Removed.
* UserInterface/Images/gtk/EventListener.svg: Removed.
* UserInterface/Images/gtk/Events.svg: Removed.
* UserInterface/Images/gtk/Exception.svg: Removed.
* UserInterface/Images/gtk/Eye.svg: Removed.
* UserInterface/Images/gtk/FilterFieldActiveGlyph.svg: Removed.
* UserInterface/Images/gtk/FilterFieldGlyph.svg: Removed.
* UserInterface/Images/gtk/FloatLeft.svg: Removed.
* UserInterface/Images/gtk/FloatRight.svg: Removed.
* UserInterface/Images/gtk/FolderGeneric.png: Removed.
* UserInterface/Images/gtk/FolderGeneric@2x.png: Removed.
* UserInterface/Images/gtk/FontStyleItalic.svg: Removed.
* UserInterface/Images/gtk/FontStyleNormal.svg: Removed.
* UserInterface/Images/gtk/Function.svg: Removed.
* UserInterface/Images/gtk/Gear.svg: Removed.
* UserInterface/Images/gtk/GoToArrow.svg: Removed.
* UserInterface/Images/gtk/GradientStop.png: Removed.
* UserInterface/Images/gtk/GradientStop@2x.png: Removed.
* UserInterface/Images/gtk/GradientStopSelected.png: Removed.
* UserInterface/Images/gtk/GradientStopSelected@2x.png: Removed.
* UserInterface/Images/gtk/HeapAllocationsInstrument.svg: Removed.
* UserInterface/Images/gtk/HeapSnapshotObjectGraph.svg: Removed.
* UserInterface/Images/gtk/HierarchicalNavigationItemChevron.svg: Removed.
* UserInterface/Images/gtk/HoverMenuButton.png: Removed.
* UserInterface/Images/gtk/HoverMenuButton@2x.png: Removed.
* UserInterface/Images/gtk/IgnoreCaches.svg: Removed.
* UserInterface/Images/gtk/Image.svg: Removed.
* UserInterface/Images/gtk/IndeterminateProgressSpinner1.svg: Removed.
* UserInterface/Images/gtk/IndeterminateProgressSpinner10.svg: Removed.
* UserInterface/Images/gtk/IndeterminateProgressSpinner11.svg: Removed.
* UserInterface/Images/gtk/IndeterminateProgressSpinner12.svg: Removed.
* UserInterface/Images/gtk/IndeterminateProgressSpinner2.svg: Removed.
* UserInterface/Images/gtk/IndeterminateProgressSpinner3.svg: Removed.
* UserInterface/Images/gtk/IndeterminateProgressSpinner4.svg: Removed.
* UserInterface/Images/gtk/IndeterminateProgressSpinner5.svg: Removed.
* UserInterface/Images/gtk/IndeterminateProgressSpinner6.svg: Removed.
* UserInterface/Images/gtk/IndeterminateProgressSpinner7.svg: Removed.
* UserInterface/Images/gtk/IndeterminateProgressSpinner8.svg: Removed.
* UserInterface/Images/gtk/IndeterminateProgressSpinner9.svg: Removed.
* UserInterface/Images/gtk/Info.svg: Removed.
* UserInterface/Images/gtk/InstructionPointer.png: Removed.
* UserInterface/Images/gtk/InstructionPointer@2x.png: Removed.
* UserInterface/Images/gtk/Issues.svg: Removed.
* UserInterface/Images/gtk/IssuesEnabled.svg: Removed.
* UserInterface/Images/gtk/LayerBorders.svg: Removed.
* UserInterface/Images/gtk/Layers.svg: Removed.
* UserInterface/Images/gtk/LayoutInstrument.svg: Removed.
* UserInterface/Images/gtk/ListStylePositionInside.svg: Removed.
* UserInterface/Images/gtk/ListStylePositionOutside.svg: Removed.
* UserInterface/Images/gtk/LocalStorage.png: Removed.
* UserInterface/Images/gtk/LocalStorage@2x.png: Removed.
* UserInterface/Images/gtk/Locked.svg: Removed.
* UserInterface/Images/gtk/Log.svg: Removed.
* UserInterface/Images/gtk/Logs.svg: Removed.
* UserInterface/Images/gtk/MemoryInstrument.svg: Removed.
* UserInterface/Images/gtk/Minus.svg: Removed.
* UserInterface/Images/gtk/Native.svg: Removed.
* UserInterface/Images/gtk/NavigationItemCheckers.svg: Removed.
* UserInterface/Images/gtk/NavigationItemCodeCoverage.svg: Removed.
* UserInterface/Images/gtk/NavigationItemCurleyBraces.svg: Removed.
* UserInterface/Images/gtk/NavigationItemGarbageCollect.svg: Removed.
* UserInterface/Images/gtk/NavigationItemTrash.svg: Removed.
* UserInterface/Images/gtk/NavigationItemTypes.svg: Removed.
* UserInterface/Images/gtk/Network.svg: Removed.
* UserInterface/Images/gtk/NetworkInstrument.svg: Removed.
* UserInterface/Images/gtk/NewTab.svg: Removed.
* UserInterface/Images/gtk/NewTabPlus.svg: Removed.
* UserInterface/Images/gtk/Paint.svg: Removed.
* UserInterface/Images/gtk/Path.svg: Removed.
* UserInterface/Images/gtk/Pause.svg: Removed.
* UserInterface/Images/gtk/PausedBreakpoint.svg: Removed.
* UserInterface/Images/gtk/Pencil.svg: Removed.
* UserInterface/Images/gtk/Plus13.svg: Removed.
* UserInterface/Images/gtk/Plus15.svg: Removed.
* UserInterface/Images/gtk/Printer.svg: Removed.
* UserInterface/Images/gtk/Program.svg: Removed.
* UserInterface/Images/gtk/PseudoElement.svg: Removed.
* UserInterface/Images/gtk/Receiving.svg: Removed.
* UserInterface/Images/gtk/Record.svg: Removed.
* UserInterface/Images/gtk/Recording.svg: Removed.
* UserInterface/Images/gtk/Reflection.svg: Removed.
* UserInterface/Images/gtk/ReloadFull.svg: Removed.
* UserInterface/Images/gtk/ReloadToolbar.svg: Removed.
* UserInterface/Images/gtk/RenderingFrame.svg: Removed.
* UserInterface/Images/gtk/RenderingFramesInstrument.svg: Removed.
* UserInterface/Images/gtk/Request.svg: Removed.
* UserInterface/Images/gtk/Resources.svg: Removed.
* UserInterface/Images/gtk/Response.svg: Removed.
* UserInterface/Images/gtk/ResultLine.svg: Removed.
* UserInterface/Images/gtk/Resume.svg: Removed.
* UserInterface/Images/gtk/ScriptsInstrument.svg: Removed.
* UserInterface/Images/gtk/Search.svg: Removed.
* UserInterface/Images/gtk/SearchResults.svg: Removed.
* UserInterface/Images/gtk/Sending.svg: Removed.
* UserInterface/Images/gtk/SessionStorage.png: Removed.
* UserInterface/Images/gtk/SessionStorage@2x.png: Removed.
* UserInterface/Images/gtk/ShadowDOM.svg: Removed.
* UserInterface/Images/gtk/SliderThumb.png: Removed.
* UserInterface/Images/gtk/SliderThumb@2x.png: Removed.
* UserInterface/Images/gtk/SliderThumbPressed.png: Removed.
* UserInterface/Images/gtk/SliderThumbPressed@2x.png: Removed.
* UserInterface/Images/gtk/SortIndicatorArrows.svg: Removed.
* UserInterface/Images/gtk/Source.svg: Removed.
* UserInterface/Images/gtk/SplitToggleUp.svg: Removed.
* UserInterface/Images/gtk/StepInto.svg: Removed.
* UserInterface/Images/gtk/StepOut.svg: Removed.
* UserInterface/Images/gtk/StepOver.svg: Removed.
* UserInterface/Images/gtk/Stop.svg: Removed.
* UserInterface/Images/gtk/Stopwatch.svg: Removed.
* UserInterface/Images/gtk/Storage.svg: Removed.
* UserInterface/Images/gtk/StyleRule.svg: Removed.
* UserInterface/Images/gtk/StyleRuleInheritedElement.svg: Removed.
* UserInterface/Images/gtk/StyleRulePseudoElement.svg: Removed.
* UserInterface/Images/gtk/TailDeletedFunction.svg: Removed.
* UserInterface/Images/gtk/TextAlignCenter.svg: Removed.
* UserInterface/Images/gtk/TextAlignJustify.svg: Removed.
* UserInterface/Images/gtk/TextAlignLeft.svg: Removed.
* UserInterface/Images/gtk/TextAlignRight.svg: Removed.
* UserInterface/Images/gtk/TextDecorationLineThrough.svg: Removed.
* UserInterface/Images/gtk/TextDecorationOverline.svg: Removed.
* UserInterface/Images/gtk/TextDecorationUnderline.svg: Removed.
* UserInterface/Images/gtk/TextTransformCapitalize.svg: Removed.
* UserInterface/Images/gtk/TextTransformLowercase.svg: Removed.
* UserInterface/Images/gtk/TextTransformUppercase.svg: Removed.
* UserInterface/Images/gtk/Thread.svg: Removed.
* UserInterface/Images/gtk/Time.svg: Removed.
* UserInterface/Images/gtk/Timeline.svg: Removed.
* UserInterface/Images/gtk/TimelineRecordAPI.svg: Removed.
* UserInterface/Images/gtk/TimelineRecordAnimation.svg: Removed.
* UserInterface/Images/gtk/TimelineRecordComposite.svg: Removed.
* UserInterface/Images/gtk/TimelineRecordConsoleProfile.svg: Removed.
* UserInterface/Images/gtk/TimelineRecordEvent.svg: Removed.
* UserInterface/Images/gtk/TimelineRecordLayout.svg: Removed.
* UserInterface/Images/gtk/TimelineRecordPaint.svg: Removed.
* UserInterface/Images/gtk/TimelineRecordProbeSampled.svg: Removed.
* UserInterface/Images/gtk/TimelineRecordScriptEvaluated.svg: Removed.
* UserInterface/Images/gtk/TimelineRecordStyle.svg: Removed.
* UserInterface/Images/gtk/TimelineRecordTimer.svg: Removed.
* UserInterface/Images/gtk/ToggleLeftSidebar.svg: Removed.
* UserInterface/Images/gtk/ToggleRightSidebar.svg: Removed.
* UserInterface/Images/gtk/TypeBoolean.svg: Removed.
* UserInterface/Images/gtk/TypeNull.svg: Removed.
* UserInterface/Images/gtk/TypeNumber.svg: Removed.
* UserInterface/Images/gtk/TypeObject.svg: Removed.
* UserInterface/Images/gtk/TypeRegex.svg: Removed.
* UserInterface/Images/gtk/TypeString.svg: Removed.
* UserInterface/Images/gtk/TypeSymbol.svg: Removed.
* UserInterface/Images/gtk/TypeUndefined.svg: Removed.
* UserInterface/Images/gtk/Undock.svg: Removed.
* UserInterface/Images/gtk/UpDownArrows.svg: Removed.
* UserInterface/Images/gtk/UserInputPrompt.svg: Removed.
* UserInterface/Images/gtk/UserInputPromptPrevious.svg: Removed.
* UserInterface/Images/gtk/UserInputResult.svg: Removed.
* UserInterface/Images/gtk/VisualStyleNone.svg: Removed.
* UserInterface/Images/gtk/VisualStylePropertyLinked.svg: Removed.
* UserInterface/Images/gtk/VisualStylePropertyUnlinked.svg: Removed.
* UserInterface/Images/gtk/Warning.svg: Removed.
* UserInterface/Images/gtk/WebSocket.png: Removed.
* UserInterface/Images/gtk/WebSocket@2x.png: Removed.
* UserInterface/Images/gtk/WebSocketLarge.png: Removed.
* UserInterface/Images/gtk/WebSocketLarge@2x.png: Removed.
* UserInterface/Images/gtk/Weight.svg: Removed.
* UserInterface/Images/gtk/WorkerScript.png: Removed.
* UserInterface/Images/gtk/WorkerScript@2x.png: Removed.
* UserInterface/Images/gtk/WorkerScriptLarge.png: Removed.
* UserInterface/Images/gtk/WorkerScriptLarge@2x.png: Removed.
2017-11-14 Joseph Pecoraro <pecoraro@apple.com>
Relicense non-distributable web inspector images
https://bugs.webkit.org/show_bug.cgi?id=166460
<rdar://problem/29800966>
Reviewed by Brian Burg.
* APPLE_IMAGES_LICENSE.rtf: Removed.
Remove the restrictive Web Inspector images license and default to the
same license as the rest of WebKit.
The Apple Images license was never intended to restrict distribution of
Web Inspector images when used as part of WebKit. Now, all contributions
to Web Inspector, images and source, have the same licensing as all other
WebKit contributions.
2017-11-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Detail Views - Split Metrics into Sizes and Timing
https://bugs.webkit.org/show_bug.cgi?id=179569
<rdar://problem/35484914>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New resources and strings.
* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.initialLayout):
(WI.NetworkResourceDetailView.prototype._showPreferredContentView):
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
(WI.NetworkResourceDetailView.prototype.sizesContentViewGoToHeaders): Renamed.
(WI.NetworkResourceDetailView.prototype.sizesContentViewGoToRequestBody): Renamed.
(WI.NetworkResourceDetailView.prototype.sizesContentViewGoToResponseBody): Renamed.
Split into two navigation items and views.
* UserInterface/Views/ResourceMetricsContentView.css: Removed.
* UserInterface/Views/ResourceMetricsContentView.js: Removed.
* UserInterface/Views/ResourceSizesContentView.css: Added.
* UserInterface/Views/ResourceSizesContentView.js: Added.
* UserInterface/Views/ResourceTimingContentView.css: Added.
* UserInterface/Views/ResourceTimingContentView.js: Added.
Split Metrics into two views.
2017-11-14 Matt Baker <mattbaker@apple.com>
Web Inspector: Cleanup navigation bar dividers and separators
https://bugs.webkit.org/show_bug.cgi?id=179654
<rdar://problem/35523734>
Reviewed by Devin Rousso.
Update path separator icon, and reduce number of dividers used in the
content browser's navigation bar, to more closely match modern Xcode.
* UserInterface/Images/HierarchicalNavigationItemChevron.svg:
Update icon, remove tapered arrow head.
* UserInterface/Views/ContentBrowser.js:
(WI.ContentBrowser):
Remove divider between back/forward buttons and item name.
(WI.ContentBrowser.prototype._updateContentViewNavigationItems):
* UserInterface/Views/HierarchicalPathComponent.css:
(.hierarchical-path-component > .separator):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype.get navigationItems):
Remove dividers between buttons provided by the current content view.
2017-11-13 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Details Views - make section headers more prominent
https://bugs.webkit.org/show_bug.cgi?id=179565
<rdar://problem/35510531>
Reviewed by Devin Rousso.
* UserInterface/Views/ResourceDetailsSection.css:
(.resource-details > section > .title):
2017-11-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: make selector field inline-block when editing
https://bugs.webkit.org/show_bug.cgi?id=179588
<rdar://problem/35490915>
Reviewed by Brian Burg.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration .header.editing-selector .origin):
When the selector field is multiline, it covers the source link entirely.
When the selector field takes only one line, the source link remains where it was before editing.
(.spreadsheet-css-declaration .selector):
Make it `position: relative` to cover the source link.
(.spreadsheet-css-declaration .selector.spreadsheet-selector-field.editing):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
2017-11-13 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION(r223856): Web Inspector: Cannot view Request Data
https://bugs.webkit.org/show_bug.cgi?id=179567
Reviewed by Brian Burg.
* UserInterface/Views/ResourceClusterContentView.js:
(WI.ResourceClusterContentView.prototype._canShowRequestContentView):
This condition unintentionally got flipped in r223856.
2017-11-13 Matt Baker <mattbaker@apple.com>
Web Inspector: Add CheckboxNavigationItem
https://bugs.webkit.org/show_bug.cgi?id=179584
<rdar://problem/35490085>
Reviewed by Brian Burg.
* UserInterface/Main.html:
* UserInterface/Views/ButtonNavigationItem.css:
(.navigation-bar .item.button.text-only.checkbox):
(.navigation-bar .item.button.text-only.checkbox label):
* UserInterface/Views/ButtonNavigationItem.js:
Cleanup and some tweaks to the label to make it work with subclasses
regardless of how label is represented in the DOM.
(WI.ButtonNavigationItem):
(WI.ButtonNavigationItem.prototype.get toolTip):
(WI.ButtonNavigationItem.prototype.set toolTip):
(WI.ButtonNavigationItem.prototype.get label):
(WI.ButtonNavigationItem.prototype.set label):
(WI.ButtonNavigationItem.prototype.set image):
(WI.ButtonNavigationItem.prototype.get enabled):
(WI.ButtonNavigationItem.prototype.set enabled):
(WI.ButtonNavigationItem.prototype.updateButtonText):
* UserInterface/Views/CheckboxNavigationItem.js: Added.
New button item with a checkbox and label. Dispatches a Clicked evennt
whenever the checked state changes.
(WI.CheckboxNavigationItem):
(WI.CheckboxNavigationItem.prototype.get checked):
(WI.CheckboxNavigationItem.prototype.set checked):
(WI.CheckboxNavigationItem.prototype.get additionalClassNames):
(WI.CheckboxNavigationItem.prototype.updateButtonText):
(WI.CheckboxNavigationItem.prototype._checkboxChanged):
2017-11-13 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Give DataGrid/Table Header ContextMenu a section header to better describe its functions
https://bugs.webkit.org/show_bug.cgi?id=179560
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
New string.
* UserInterface/Views/DataGrid.js:
(WI.DataGrid.prototype._contextMenuInHeader):
* UserInterface/Views/Table.js:
(WI.Table.prototype._handleHeaderContextMenu):
Include a disabled context menu item as a section header.
2017-11-12 Carlos Garcia Campos <cgarcia@igalia.com>
REGRESSION(r224566): [GTK] 26 new timeouts on inspector related tests.
https://bugs.webkit.org/show_bug.cgi?id=179471
Reviewed by Darin Adler.
TestStub.html and TestStub.js was missing in resources bundle.
* Scripts/copy-user-interface-resources.pl: Also combine resources for TestStub.
2017-11-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network detail views - Include a newline between sections when copying
https://bugs.webkit.org/show_bug.cgi?id=179577
Reviewed by Matt Baker.
* UserInterface/Views/NetworkResourceDetailView.css:
(.content-view.resource-details):
* UserInterface/Views/ResourceDetailsSection.css:
(.resource-details > section):
(.resource-details > section > .title):
Adjust styles now that there is a <br> taking up space between sections.
After all the changes, the top section moved up 1px from where it was originally.
* UserInterface/Views/ResourceDetailsSection.js:
(WI.ResourceDetailsSection):
Include a <br> to get newlines when copying.
2017-11-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network waterfall graph - make connection part thinner
https://bugs.webkit.org/show_bug.cgi?id=179561
Reviewed by Devin Rousso.
* UserInterface/Views/NetworkTableContentView.css:
(.waterfall .block):
2017-11-11 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas tab: show detailed status during canvas recording
https://bugs.webkit.org/show_bug.cgi?id=178185
<rdar://problem/34939862>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Protocol/CanvasObserver.js:
(WI.CanvasObserver.prototype.recordingProgress):
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager):
(WI.CanvasManager.prototype.recordingProgress):
(WI.CanvasManager.prototype.recordingFinished):
Maintain arrays of recorded frames for each canvas and add new frames each time a progress
event is fired. When the recording is finished, use the array as part of the payload for
creating a WI.Recording object.
* UserInterface/Models/Recording.js:
(WI.Recording.fromPayload):
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.apply.getContent):
(WI.RecordingAction.prototype.apply):
Drive-by fix: toDataURL is very slow, so add alternative ways of getting and comparing the
content of the canvas to determine if the action has a visible effect.
* UserInterface/Views/CanvasContentView.css:
(.content-view.canvas:not(.tab)):
(.content-view.canvas:not(.tab) > .progress):
(.content-view.canvas:not(.tab) > .progress > .frame-count):
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype._recordingStarted):
(WI.CanvasContentView.prototype._recordingProgress):
(WI.CanvasContentView.prototype._recordingStopped):
Steal some space from the preview area to display a count of the number of recorded frames
and the current buffer usage.
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas > :matches(header, .progress, .preview, footer)):
(.content-view.canvas-overview .content-view.canvas.selected > :matches(.progress, .preview, footer),):
(.content-view.canvas-overview .content-view.canvas > :matches(.progress, .preview)):
(.content-view.canvas-overview .content-view.canvas > .preview):
(.content-view.canvas-overview .content-view.canvas > .progress ~ .preview):
(.content-view.canvas-overview .content-view.canvas > :matches(header, .preview, footer)): Deleted.
(.content-view.canvas-overview .content-view.canvas.selected > :matches(.preview, footer),): Deleted.
2017-11-09 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: clicking on inline swatches and property checkboxes should not add a new property
https://bugs.webkit.org/show_bug.cgi?id=179507
<rdar://problem/35452204>
Reviewed by Brian Burg.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
Don't add new properties when clicking on selector fields, source links, and property checkboxes.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._update):
It is safe to replace "change" event with "click" since it fires even when pressing Space key when the checkbox is focused.
2017-11-09 Devin Rousso <webkit@devinrousso.com>
Web Inspector: support undo/redo of insertAdjacentHTML
https://bugs.webkit.org/show_bug.cgi?id=179283
Reviewed by Joseph Pecoraro.
* UserInterface/Models/DOMNode.js:
(WI.DOMNode.prototype.insertAdjacentHTML):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._startEditingAsHTML):
Drive-by: only attempt to update the cursor if an initialValue is supplied.
2017-11-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Make domain availability a list of types instead of a single type
https://bugs.webkit.org/show_bug.cgi?id=179457
Reviewed by Brian Burg.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass.prototype.activateDomain):
The second value changed to be an optional list. Check if the active
debuggable type is in the list or not.
* UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
* Versions/Inspector-iOS-10.0.json:
* Versions/Inspector-iOS-10.3.json:
* Versions/Inspector-iOS-11.0.json:
* Versions/Inspector-iOS-8.0.json:
* Versions/Inspector-iOS-9.0.json:
* Versions/Inspector-iOS-9.3.json:
Since this is a change to how we generate the frontend resource,
update the legacy versioned backends and regenerate their resource.
2017-11-09 Carlos Garcia Campos <cgarcia@igalia.com>
REGRESSION(r224566): [GTK][WPE] Many inspector tests are failing after r224566
https://bugs.webkit.org/show_bug.cgi?id=179419
Reviewed by Carlos Alberto Lopez Perez.
All of them fail with the following error:
Uncaught exception in Inspector page: ReferenceError: Can't find variable: CodeMirror [TestCombined.js:36658:15]
This is because Test.html, even when combined, is trying to load CodeMirror from External/CodeMirror, but
CodeMirror was already combined for Main.html. We need to also combine CodeMirror for Test.html.
* Scripts/copy-user-interface-resources.pl:
2017-11-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Show Internal properties of PaymentRequest in Web Inspector Console
https://bugs.webkit.org/show_bug.cgi?id=179276
Reviewed by Andy Estes.
* UserInterface/Test.html:
* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness.prototype.evaluateInPage):
* UserInterface/Test/TestUtilities.js: Added.
(promisify):
Make async tests a little easier to work with by providing promises
in some cases that would normally take a callback.
2017-11-08 Brian Burg <bburg@apple.com>
Web Inspector: fix incorrect curly quote orientation in a UIString
https://bugs.webkit.org/show_bug.cgi?id=179353
<rdar://problem/35368697>
Reviewed by Joseph Pecoraro.
I didn't see any other instances of this mistake in our localized strings.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/ResourceTimelineDataGridNode.js:
Fix it.
2017-11-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused Page.ScriptIdentifier protocol type
https://bugs.webkit.org/show_bug.cgi?id=179407
Reviewed by Matt Baker.
* Versions/Inspector-iOS-10.0.json:
* Versions/Inspector-iOS-10.3.json:
* Versions/Inspector-iOS-11.0.json:
* Versions/Inspector-iOS-7.0.json:
* Versions/Inspector-iOS-8.0.json:
* Versions/Inspector-iOS-9.0.json:
* Versions/Inspector-iOS-9.3.json:
Remove unused protocol type.
2017-11-06 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: Display warnings
https://bugs.webkit.org/show_bug.cgi?id=179215
Reviewed by Brian Burg.
Display warning icons on the right of the property.
For now, the warning icons have only three title messages:
- Invalid property name;
- Invalid property value;
- Duplicate property.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property):
(.spreadsheet-style-declaration-editor .property-toggle):
(.spreadsheet-style-declaration-editor .property.invalid-value:not(.disabled) .value):
(.spreadsheet-style-declaration-editor .property.has-warning):
(.spreadsheet-style-declaration-editor .property .warning):
Draw the warning arrow and icon using only one HTML element.
Don't set "top" property so the element remains vertically where it would be if it had "position: static".
(.spreadsheet-style-declaration-editor .property.has-warning .warning):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
(WI.SpreadsheetCSSStyleDeclarationEditor):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration):
(.spreadsheet-css-declaration :matches(.header, .header-media)):
(.spreadsheet-css-declaration .close-brace):
Make properties span the entire width of the styles sidebar. Unsupported properties have yellow
background. There should be no gaps between the property element and sidebar left and right edges.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.updateStatus):
(WI.SpreadsheetStyleProperty.prototype._update):
(WI.SpreadsheetStyleProperty.prototype.updateClassNames): Deleted.
Rename updateClassNames to updateStatus since it modifies title attribute of the warning element.
2017-11-06 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Two little Layers tab fixes
https://bugs.webkit.org/show_bug.cgi?id=179273
Reviewed by Devin Rousso.
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
Even when we suppress refire of the selected event, we still want a popover.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype.shown):
(WI.Layers3DContentView.prototype.hidden):
(WI.Layers3DContentView.prototype.closed):
(WI.Layers3DContentView.prototype._layerTreeDidChange):
Opening WI directly to the Layers tab wasn't fetching layers right away. Let's fetch on every shown() and
prune the hacky logic we were previously using -- it's overkill anyway, now that we're tracking mutations.
2017-11-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: no way to navigate from Resource tree element to its entry in Network Tab
https://bugs.webkit.org/show_bug.cgi?id=179328
<rdar://problem/35367294>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
New reveal in network tab string.
* UserInterface/Base/Main.js:
(WI.isShowingNetworkTab):
Utility to know if the network tab is showing.
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForSourceCode):
(showResourceWithOptions):
(WI.appendContextMenuItemsForURL):
Generalize context menus for just a URL.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
Support more tab ignore options, this is starting to get icky. We may want to
move to just a preferredTab approach, since that is what some of these want.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._populateTagContextMenu):
Make use of new ContextMenu utility to add menu items for a URL.
* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView.prototype.showRepresentedObject):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.showRepresentedObject):
Handle showing a Resource in the NetworkTab. We immediately show
the details view for it, otherwise we fallback to the list view.
2017-11-06 Joseph Pecoraro <pecoraro@apple.com>
Uncaught Exception: TypeError: null is not an object (evaluating 'mimeType.endsWith')
https://bugs.webkit.org/show_bug.cgi?id=179325
<rdar://problem/35366896>
Reviewed by Brian Burg.
* UserInterface/Base/MIMETypeUtilities.js:
(WI.fileExtensionForMIMEType):
(WI.shouldTreatMIMETypeAsText):
Handle null mime types.
2017-11-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Selecting a DOM Search Result in Search Tab unexpectedly changes Tabs
https://bugs.webkit.org/show_bug.cgi?id=179223
<rdar://problem/33949556>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
New string.
* UserInterface/Views/SearchResultTreeElement.js:
(WI.SearchResultTreeElement.prototype.populateContextMenu):
Add a context menu for search results to jump to a different tab.
These behaviors match the double click behavior for search results.
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView.prototype.canShowRepresentedObject):
Always support showing a DOM Tree. Clients should be using
ignoreSearchTab if they don't want to jump here.
* UserInterface/Views/DOMTreeDataGridNode.js:
(WI.DOMTreeDataGridNode.prototype._goToArrowWasClicked):
* UserInterface/Views/LayerTreeDataGridNode.js:
(WI.LayerTreeDataGridNode.prototype._goToArrowWasClicked):
Use ignoreSearchTab just in case when showing a DOM Tree.
* UserInterface/Views/ContentBrowser.js:
(WI.ContentBrowser.prototype.shown):
When showing, update our UI to reflect the values of the current content view, which
for a while may have been owned by another ContentBrowser.
(WI.ContentBrowser.prototype._contentViewSelectionPathComponentDidChange):
(WI.ContentBrowser.prototype._contentViewSupplementalRepresentedObjectsDidChange):
(WI.ContentBrowser.prototype._contentViewNavigationItemsDidChange):
We can avoid work in a few places where we might not be the owning ContentBrowser
of a ContentView that is changing.
2017-11-05 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r221338): Web Inspector: NavigationBar incorrectly calculates minimumWidth
https://bugs.webkit.org/show_bug.cgi?id=179292
Reviewed by Devin Rousso.
* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype._calculateMinimumWidth):
totalItemWidth was the minimumWidth of the last item.
2017-11-05 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab: selecting Frame tree element should update preview/slider, does nothing
https://bugs.webkit.org/show_bug.cgi?id=179072
<rdar://problem/35278711>
Reviewed by Matt Baker.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged):
* UserInterface/Views/RecordingActionTreeElement.css:
(.item.action > .titles .parameter.swizzled):
(.tree-outline:not(:focus, .force-focus) .item.action:not(.initial-state, .parent, .invalid) > .icon): Deleted.
(body:not(.window-inactive, .window-docked-inactive) .item.action > .titles .parameter.swizzled): Deleted.
Drive-by: remove extra :focus selectors to prevent icon flashing when the window is blurred.
2017-11-04 Devin Rousso <webkit@devinrousso.com>
Web Inspector: add contextmenu item to arbitrarily add HTML/Child to DOMTree
https://bugs.webkit.org/show_bug.cgi?id=179042
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/DOMNode.js:
(WI.DOMNode.prototype.insertAdjacentHTML.inspectedPage_node_insertAdjacentHTML):
(WI.DOMNode.prototype.insertAdjacentHTML):
Call-through to `insertAdjacentHTML` on the corresponding node in the inspected page.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement):
(WI.DOMTreeElement.prototype._populateNodeContextMenu):
(WI.DOMTreeElement.prototype._startEditingAsHTML.dispose):
(WI.DOMTreeElement.prototype._startEditingAsHTML):
(WI.DOMTreeElement.prototype._insertAdjacentHTML.commitCallback):
(WI.DOMTreeElement.prototype._insertAdjacentHTML):
(WI.DOMTreeElement.prototype.updateTitle):
(WI.DOMTreeElement.prototype._singleTextChild):
(WI.DOMTreeElement.prototype._nodeTitleInfo):
(WI.DOMTreeElement.prototype._addHTML):
(WI.DOMTreeElement.prototype._addPreviousSibling):
(WI.DOMTreeElement.prototype._addNextSibling):
(WI.DOMTreeElement.prototype._editAsHTML):
Adjust where the editing element is placed depending on the options passed to `_editAsHTML`.
If the placement is as a child, put it inside the child list. If the placement is as a
sibling, place it before/after the selected TreeElement. Otherwise, add it as a child.
* UserInterface/Views/DOMTreeOutline.css:
(.tree-outline.dom):
(.tree-outline.dom li):
(.tree-outline.dom li:not(.editing)):
(.tree-outline.dom li.editing):
(body[dir=ltr] .tree-outline.dom li): Deleted.
(body[dir=rtl] .tree-outline.dom li): Deleted.
Don't add padding when the list item is being edited.
2017-11-03 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Uncaught Exception: null is not an object (evaluating 'selector.specificity.map') (at SpreadsheetCSSStyleDeclarationSection.js:199:51)
https://bugs.webkit.org/show_bug.cgi?id=179225
<rdar://problem/35329019>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):
selector.specificity may not exist when the selector is dynamic and doesn't match the selected element.
2017-11-03 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Move Show Compositing Borders/Paint Flashing buttons from Elements tab to Layers tab
https://bugs.webkit.org/show_bug.cgi?id=179211
Reviewed by Joseph Pecoraro.
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype.get navigationItems):
(WI.DOMTreeContentView.prototype._updateCompositingBordersButtonToMatchPageSettings):
Guard old buttons with experimental flag.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype.get navigationItems):
(WI.Layers3DContentView.prototype.shown):
(WI.Layers3DContentView.prototype.closed):
(WI.Layers3DContentView.prototype._showPaintRectsSettingChanged):
(WI.Layers3DContentView.prototype._togglePaintFlashing):
(WI.Layers3DContentView.prototype._updateCompositingBordersButtonState):
(WI.Layers3DContentView.prototype._toggleCompositingBorders):
Add buttons to new home.
No need to guard for get/setCompositingBordersVisible anymore, as these were introduced in iOS 7.
2017-11-03 Devin Rousso <webkit@devinrousso.com>
Web Inspector: move top-level namespace functions in ImageUtilities to static class
https://bugs.webkit.org/show_bug.cgi?id=179207
Reviewed by Brian Burg.
* .eslintrc:
* UserInterface/Base/ImageUtilities.js:
(WI.ImageUtilities.useSVGSymbol):
(WI.ImageUtilities.scratchCanvasContext2D):
(WI.ImageUtilities.imageFromImageData):
(WI.ImageUtilities.imageFromCanvasGradient):
(WI.ImageUtilities):
(useSVGSymbol): Deleted.
(WI.scratchCanvasContext2D): Deleted.
(WI.imageFromImageData): Deleted.
(WI.imageFromCanvasGradient): Deleted.
* UserInterface/Models/Recording.js:
(WI.Recording.prototype.async swizzle):
* UserInterface/Views/ButtonNavigationItem.js:
(WI.ButtonNavigationItem.prototype.set image):
* UserInterface/Views/CallFrameTreeElement.js:
(WI.CallFrameTreeElement.prototype._updateStatus):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WI.DOMNodeDetailsSidebarPanel.prototype.initialLayout):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._updateBreakpointStatus):
* UserInterface/Views/MultipleScopeBarItem.js:
(WI.MultipleScopeBarItem):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._generateDOM):
(WI.RecordingActionTreeElement.prototype._handleHasVisibleEffectChanged):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
* UserInterface/Views/ResourceMetricsContentView.js:
(WI.ResourceMetricsContentView.prototype._refreshResourceSizeSection):
* UserInterface/Views/ScopeRadioButtonNavigationItem.js:
(WI.ScopeRadioButtonNavigationItem):
* UserInterface/Views/ThreadTreeElement.js:
(WI.ThreadTreeElement.prototype._updateStatus):
* UserInterface/Views/TimelineTreeElement.js:
(WI.TimelineTreeElement.prototype._showCloseButton):
* UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
(WI.VisualStyleCommaSeparatedKeywordEditor):
* UserInterface/Views/VisualStyleKeywordIconList.js:
(WI.VisualStyleKeywordIconList):
* UserInterface/Views/VisualStylePropertyEditorLink.js:
(WI.VisualStylePropertyEditorLink):
* UserInterface/Views/VisualStyleSelectorSection.js:
(WI.VisualStyleSelectorSection):
* UserInterface/Views/WebSocketDataGridNode.js:
(WI.WebSocketDataGridNode.prototype.createCellContent):
2017-11-03 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Hide legacy Layers sidebar on Search tab
https://bugs.webkit.org/show_bug.cgi?id=179257
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView):
2017-11-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Table - Include a secure lock indicator in the domain column
https://bugs.webkit.org/show_bug.cgi?id=179233
<rdar://problem/34070883>
Reviewed by Devin Rousso.
* UserInterface/Views/NetworkTableContentView.css:
(.network-table .cell.domain > .lock):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.tablePopulateCell):
(WI.NetworkTableContentView.prototype._populateDomainCell):
Add a small lock icon by the domain if the request was https/wss.
2017-11-03 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas2D Profiling: highlight expensive context commands in the captured command log
https://bugs.webkit.org/show_bug.cgi?id=178302
<rdar://problem/33158849>
Reviewed by Brian Burg.
* UserInterface/Models/RecordingFrame.js:
(WI.RecordingFrame):
(WI.RecordingFrame.fromPayload):
(WI.RecordingFrame.prototype.get duration):
(WI.RecordingFrame.prototype.toJSON):
* UserInterface/Views/RecordingNavigationSidebarPanel.js:
(WI.RecordingNavigationSidebarPanel.prototype.set recording):
* UserInterface/Views/RecordingNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.recording > .content > .tree-outline .item.folder-icon > .status):
2017-11-02 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab: show supported GL extensions for selected canvas
https://bugs.webkit.org/show_bug.cgi?id=179070
<rdar://problem/35278276>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Protocol/CanvasObserver.js:
(WI.CanvasObserver.prototype.extensionEnabled):
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.extensionEnabled):
* UserInterface/Models/Canvas.js:
(WI.Canvas.prototype.get extensions):
(WI.Canvas.prototype.enableExtension):
Maintain a Set of enabled extensions, and dispatch an event whenever an extension is enabled.
* UserInterface/Views/CanvasDetailsSidebarPanel.css:
(.sidebar > .panel.details.canvas .details-section.canvas-extensions .content > ul):
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel.prototype.set canvas):
(WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
(WI.CanvasDetailsSidebarPanel.prototype.layout):
(WI.CanvasDetailsSidebarPanel.prototype._refreshAttributesSection):
(WI.CanvasDetailsSidebarPanel.prototype._refreshExtensionsSection):
Drive-by: hide Attributes section when the canvas has no attributes.
2017-11-02 Joseph Pecoraro <pecoraro@apple.com>
Make ServiceWorker a Remote Inspector debuggable target
https://bugs.webkit.org/show_bug.cgi?id=179043
<rdar://problem/34126008>
Reviewed by Brian Burg.
Customize the Web Inspector frontend for a ServiceWorker target.
Currently this just behaves like a JavaScript Context target because
we haven't yet added support for Networking capabilities.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype.get knownNonResourceScripts):
Drive-by fix a bug where lazily initializing the Resources / Debugger tabs
would show Console evaluation scripts. We should ignore them, like we
do in other places.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Controllers/AppController.js:
(WI.AppController):
(WI.AppController.debuggableTypeFromHost):
* UserInterface/Controllers/AppControllerBase.js:
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.defaultTimelineTypes):
(WI.TimelineManager.availableTimelineTypes):
* UserInterface/Models/TimelineRecording.js:
(WI.TimelineRecording.sourceCodeTimelinesSupported):
* UserInterface/Protocol/MainTarget.js:
(WI.MainTarget.prototype.get displayName):
* UserInterface/Test/TestAppController.js:
* UserInterface/Views/DashboardContainerView.css:
(body:not(.web) .toolbar .dashboard-container):
(body.javascript .toolbar .dashboard-container): Deleted.
* UserInterface/Views/DefaultDashboardView.css:
(body:not(.web) .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)):
(body.javascript .toolbar .dashboard.default > :matches(.resourcesCount, .resourcesSize, .time)): Deleted.
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel):
(WI.ResourceSidebarPanel.shouldPlaceResourcesAtTopLevel):
(WI.ResourceSidebarPanel.prototype.initialLayout):
(WI.ResourceSidebarPanel.prototype._addScript):
(WI.ResourceSidebarPanel.prototype._extraDomainsActivated):
* UserInterface/Views/Toolbar.js:
2017-11-02 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas: recording parameters that include an Image should show an InlineSwatch (2D canvas)
https://bugs.webkit.org/show_bug.cgi?id=177032
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Test.html:
* UserInterface/Base/ImageUtilities.js:
(WI.scratchCanvasContext2D):
Creates a static canvas that can be used for scratch purposes, such as converting ImageData
to an Image, or rendering the result of a CanvasGradient. The canvas is reset after each
call of the function so it can be reused by other callers.
(WI.imageFromImageData):
(WI.imageFromCanvasGradient):
Utility functions for getting a dataURL image of ImageData/CanvasGradient after drawing it
onto WI.scratchCanvasContext2D.
* UserInterface/Models/Recording.js:
(WI.Recording.prototype.async.swizzle):
Set the Image used to create a CanvasPattern as an expando property for later use.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.getImageParameters):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._generateDOM):
Add Image InlineSwatch elements for parameters that are viewable as an image. For ImageData
and CanvasGradient, WI.scratchCanvasContext2D is used to draw the ImageData/CanvasGradient
and get a dataURL to be used as the image.
(WI.RecordingActionTreeElement._createSwatchForColorParameters):
Drive-by: add checks that the parameter is not a CanvasGradient or CanvasPattern.
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
Add Image InlineSwatch elements for fillStyle/strokeStyle when the value is a CanvasGradient
or a CanvasPattern.
* UserInterface/Views/InlineSwatch.js:
(WI.InlineSwatch):
(WI.InlineSwatch.prototype._updateSwatch):
(WI.InlineSwatch.prototype._swatchElementClicked):
* UserInterface/Views/InlineSwatch.css:
(.inline-swatch):
(.inline-swatch:matches(.color, .gradient)):
(.inline-swatch:matches(.bezier, .spring, .variable)):
(.inline-swatch:not(.read-only):matches(.bezier, .spring, .variable):hover):
(.inline-swatch:not(.read-only):matches(.bezier, .spring, .variable):active):
(.inline-swatch:not(.read-only):active > span):
(.inline-swatch:matches(.bezier, .spring, .variable) > span):
(.inline-swatch.image > span):
(.inline-swatch:matches(.bezier, .spring, .variable):hover): Deleted.
(.inline-swatch:matches(.bezier, .spring, .variable):active): Deleted.
(.inline-swatch:active > span): Deleted.
(.inline-swatch:matches(.bezier, .spring) > span): Deleted.
Add Image type for showing previews of images.
Drive-by: simplify some styles.
* UserInterface/Views/RecordingActionTreeElement.css:
(.item.action > .titles .parameters > .inline-swatch):
(.tree-outline:matches(:focus, .force-focus) .item.action > .titles .parameters > .inline-swatch): Deleted.
Drive-by: remove the :focus requirement, as it would cause the InlineSwatch to shift when
the user clicked out of the WebInspector window.
2017-11-02 Joseph Pecoraro <pecoraro@apple.com>
Inspector should display service worker served responses properly
https://bugs.webkit.org/show_bug.cgi?id=178597
<rdar://problem/35186111>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
New Service Worker related strings.
* UserInterface/Controllers/HARBuilder.js:
(WI.HARBuilder.entry):
(WI.HARBuilder.timings):
Only output timing data when we have real resource timing data.
(WI.HARBuilder.fetchType):
Output a new string for a Service Worker load in our custom field.
* UserInterface/Models/ResourceTimingData.js:
(WI.ResourceTimingData.prototype.get responseStart):
Fallback further to the responseEnd. This can happen if the response
itself is an error/failure and there was no response, so treat it as
the same as response end.
* UserInterface/Models/Resource.js:
(WI.Resource.responseSourceFromPayload):
(WI.Resource.prototype.updateForRedirectResponse):
(WI.Resource.prototype.updateForResponse):
A fetch response won't change the URL, so if the URL is empty
don't change it from what the request's URL was.
(WI.Resource.prototype.hasResponse):
Failure is like finished. We should likely transition to an "isComplete" method.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateTransferSizeCell):
(WI.NetworkTableContentView.prototype._generateSortComparator):
Output "(service worker)" in the transfer size field, to indicate this came
from a Service worker. Sort such loads together.
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype._responseSourceDisplayString):
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
Include the Service Worker response source in this details view. Also include
a FIXME, since we would like to link directly to the service worker in the future.
2017-11-02 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: turn on CSS spreadsheet editor by default
https://bugs.webkit.org/show_bug.cgi?id=179100
<rdar://problem/35285990>
Reviewed by Brian Burg.
Add a "Legacy Style Editor" checkbox and remove the experimental "Spreadsheet Style Editor" checkbox.
Remove settings of the legacy styles editor:
- Show inline warnings
- Automatically insert newline
- Select text on first click
These settings are not applicable for the spreadsheet styles editor and
now are always enabled for the legacy styles editor.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WI.CSSStyleDeclarationTextEditor):
(WI.CSSStyleDeclarationTextEditor.prototype._handleMouseUp):
(WI.CSSStyleDeclarationTextEditor.):
* UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
(WI.CSSStyleDetailsSidebarPanel):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2017-11-01 Devin Rousso <webkit@devinrousso.com>
Web Inspector: consolidate DOMTreeElement contextmenu items into submenus
https://bugs.webkit.org/show_bug.cgi?id=178996
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/ContextMenu.js:
(WI.ContextSubMenuItem.prototype.appendItem):
(WI.ContextSubMenuItem.prototype.appendSubMenuItem):
(WI.ContextSubMenuItem.prototype.appendCheckboxItem):
(WI.ContextSubMenuItem.prototype.pushItem):
(WI.ContextSubMenuItem.prototype._pushItem): Deleted.
Made `pushItem` public so that it is possible to create a ContextMenuItem without
immediately adding it to the ContextMenu.
(WI.ContextSubMenuItem.prototype._buildDescriptor):
(WI.ContextMenu.prototype._buildDescriptor):
Filter out submenus that have no items.
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNode):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype.toggleElementVisibility):
(WI.DOMTreeElement.prototype._populateTagContextMenu):
(WI.DOMTreeElement.prototype._populateTextContextMenu):
(WI.DOMTreeElement.prototype._populateNodeContextMenu):
(WI.DOMTreeElement.prototype._populateForcedPseudoStateItems): Deleted.
Add relevant items to the provided submenus and reorder the entire contextmenu for better
readability and consistency.
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype.populateContextMenu):
Create submenus for Add, Edit, Copy, and Delete, and pass them to the DOMTreeElement
"populate*ContextMenu" functions so that they can add items to each submenu.
(WI.DOMTreeOutline.prototype._hideElement):
Move to DOMTreeElement so that it can be used by a contextmenu item.
2017-11-01 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Improve UX of Layers tab visualization
https://bugs.webkit.org/show_bug.cgi?id=178966
Reviewed by Devin Rousso.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype.initialLayout):
(WI.Layers3DContentView.prototype._canvasMouseDown):
(WI.Layers3DContentView.prototype._createLayerGroup): Renamed from _addLayerGroup.
(WI.Layers3DContentView.prototype._updateLayerGroupPosition): Merged into _updateLayers.
Set up zoom and pan.
(WI.Layers3DContentView.prototype._animate):
(WI.Layers3DContentView.prototype._restrictPan):
Restrict pan to bounding box on XY plane.
(WI.Layers3DContentView.prototype.layout):
(WI.Layers3DContentView.prototype._updateDocument):
(WI.Layers3DContentView.prototype._resetCamera):
On new document, throw out all old layers and center the camera on the new document layer.
(WI.Layers3DContentView.prototype.selectLayerById):
(WI.Layers3DContentView.prototype._centerOnSelection):
Recenter the camera when layer group selection is updated programmatically.
(WI.Layers3DContentView.prototype._updateLayers):
(WI.Layers3DContentView.prototype._createLayerMesh):
Fix visual artifact due to "depthWrite" flag.
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
Suppress selection update event when the data grid selection is updated programmatically.
* UserInterface/Views/DataGridNode.js:
(WI.DataGridNode.prototype.revealAndSelect):
Allow forwarding of select()'s parameter.
2017-11-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Combine all storage icon files into a single file
https://bugs.webkit.org/show_bug.cgi?id=179134
Reviewed by Devin Rousso.
* UserInterface/Main.html:
* UserInterface/Views/CookieIcon.css: Removed.
* UserInterface/Views/DOMStorageIcons.css: Removed.
* UserInterface/Views/DatabaseIcon.css: Removed.
* UserInterface/Views/DatabaseTableIcon.css: Removed.
* UserInterface/Views/StorageIcons.css: Added.
(.application-cache-manifest .icon):
(.application-cache-frame .icon):
(.cookie-icon .icon):
(.local-storage-icon .icon):
(.session-storage-icon .icon):
(.database-icon .icon):
(.database-table-icon .icon):
2017-11-01 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: Hovering over a selector should highlight matching elements on the page
https://bugs.webkit.org/show_bug.cgi?id=179040
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
Use mouseenter/mouseleave events instead of mousein/mouseout (as in the old styles sidebar)
to avoid unnecessary events being fired.
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._highlightNodesWithSelector):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._hideDOMNodeHighlight):
2017-10-30 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: [PARITY] Styles Redesign: Ability to modify style attributes
https://bugs.webkit.org/show_bug.cgi?id=178328
<rdar://problem/35000990>
Reviewed by Joseph Pecoraro.
Before this patch, modifying a property of a style attribute duplicated the old property
and appended the new one. This happened because WI.TextRange.prototype.resolveOffsets
didn't resolve offsets correctly when text didn't end with a trailing new line.
Since WI.TextRange.prototype.resolveOffsets is used elsewhere and this could be expected
behavior, append a line break before resolving a range.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype._updateOwnerStyleText):
2017-10-30 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Clicking filler in data grid should clear selection
https://bugs.webkit.org/show_bug.cgi?id=179027
Reviewed by Brian Burg.
* UserInterface/Views/DataGrid.js:
(WI.DataGrid.prototype._mouseDownInDataTable):
2017-10-30 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab: no path components shown in recording content view after selecting a recording via View Recordings... dropdown
https://bugs.webkit.org/show_bug.cgi?id=178807
<rdar://problem/35176463>
Reviewed by Brian Burg.
When the first Recording is taken of a canvas, it is immediately added as a child. When the
CanvasTreeElement is `attached`, however, it will attempt to regenerate its children if
necessary. This is especially true for canvases with ShaderPrograms, as they are added with
`addRepresentedObjectToNewChildQueue`, meaning that the child TreeElements aren't actually
added until the next tick, preventing the ContentBrowser logic from generating path
components correctly.
This patch switches to using `addChildForRepresentedObject` so that there is no delay when
adding children, and also ensures that any existing recordings are also added on regeneration.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype._recordingAdded):
Move logic for adding TreeElements for new Recordings to CanvasTreeElement.
* UserInterface/Views/CanvasTreeElement.js:
(WI.CanvasTreeElement.createRecordingTreeElement):
(WI.CanvasTreeElement):
(WI.CanvasTreeElement.prototype.onattach):
(WI.CanvasTreeElement.prototype.ondetach):
(WI.CanvasTreeElement.prototype.onpopulate):
(WI.CanvasTreeElement.prototype._handleItemAdded):
(WI.CanvasTreeElement.prototype._handleItemRemoved):
(WI.CanvasTreeElement.prototype._shaderProgramAdded): Deleted.
(WI.CanvasTreeElement.prototype._shaderProgramRemoved): Deleted.
2017-10-30 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add Path.svg
https://bugs.webkit.org/show_bug.cgi?id=178432
Reviewed by Carlos Garcia Campos.
* UserInterface/Images/gtk/Path.svg: Added.
2017-10-30 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: [PARITY] Styles Redesign: clicking on the white space after the property should create a blank property
https://bugs.webkit.org/show_bug.cgi?id=178022
<rdar://problem/34861687>
Reviewed by Matt Baker.
- Clicking on the whitespace on the right side of a property should insert a blank property after the clicked one.
- Clicking on the whitespace at the end of a CSS rule should append a blank property.
- Clicking on the whitespace before the first property should insert a blank property before the first one.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.remove):
(WI.CSSProperty.prototype._updateOwnerStyleText):
Remove method previously didn't do anything for a newly added property.
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration.prototype.newBlankProperty):
Update indices of all properties after the newly added property.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingFirstProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingLastProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.isFocused):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.addBlankProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._addBlankProperty): Deleted.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._isFocused): Deleted.
Re-layout SpreadsheetCSSStyleDeclarationEditor after adding a new property. Preserve edited property
so we can restore editing state after the re-layout.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
Clicking should add a new property only when we aren't editing an existing property.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.updateClassNames):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
Remove newlyAdded property of SpreadsheetStyleProperty. During layout SpreadsheetCSSStyleDeclarationEditor
recreates SpreadsheetStyleProperty views and newlyAdded property gets lost.
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype.get valueBeforeEditing):
(WI.SpreadsheetTextField.prototype.startEditing):
(WI.SpreadsheetTextField.prototype.stopEditing):
(WI.SpreadsheetTextField.prototype._discardChange):
2017-10-27 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab: no way to see backtrace of where a canvas context was created
https://bugs.webkit.org/show_bug.cgi?id=178799
<rdar://problem/35175805>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.prototype.get backtrace):
* UserInterface/Views/CanvasDetailsSidebarPanel.css:
(.sidebar > .panel.details.canvas .details-section.canvas-backtrace .call-frame):
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
(WI.CanvasDetailsSidebarPanel.prototype.layout):
(WI.CanvasDetailsSidebarPanel.prototype._refreshBacktraceSection):
* UserInterface/Views/ResourceIcons.css:
(.canvas > .icon):
(.canvas .icon): Deleted.
2017-10-26 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab: canvas path components from old page stick around when page is reloaded
https://bugs.webkit.org/show_bug.cgi?id=178806
<rdar://problem/35176360>
Reviewed by Brian Burg.
Before this change, the CanvasCollection was regenerated each time the Canvas tab was
attached. This also caused the invisible TreeOutline, used for the path components and to
manage selection, to be reset as well. Whenever the page refreshed, however, the old
canvases, and associated recordings, were not removed. This patch reworks all of this logic
to create the CanvasCollection on construction of the tab and add/remove canvases as needed.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.canvasAdded):
(WI.CanvasManager.prototype.canvasRemoved):
(WI.CanvasManager.prototype._removeCanvas):
(WI.CanvasManager.prototype._mainResourceDidChange):
Replaced the "Cleared" event by instead firing "CanvasRemoved" for every tracked canvas. This
massively simplifies the logic for when the page navigates, as everything goes through a
single event listener.
Drive-by: changed existing event names to remove unnecessary words.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype.detached):
(WI.CanvasTabContentView.prototype._addCanvas):
(WI.CanvasTabContentView.prototype._removeCanvas):
(WI.CanvasTabContentView.prototype._handleCanvasAdded):
(WI.CanvasTabContentView.prototype._handleCanvasRemoved):
(WI.CanvasTabContentView.prototype._canvasAdded): Deleted.
(WI.CanvasTabContentView.prototype._canvasRemoved): Deleted.
(WI.CanvasTabContentView.prototype._mainResourceDidChange): Deleted.
Rework logic for the way that the CanvasCollection is maintained. It is no longer
created/destroyed each time the view is attached/detached, and instead a diff is calculated
for the added/existing/removed canvases and the content views are added/removed as such.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView.prototype._selectionPathComponentsChanged):
Drive-by: if an imported recording is selected on the Canvas Overview view, we should show it.
2017-10-26 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab: canvases overview should support navigation via keyboard
https://bugs.webkit.org/show_bug.cgi?id=178800
<rdar://problem/35175856>
Reviewed by Brian Burg.
Create a KeyboardShorcut for each of the following:
- Up: selects the previous canvas in the selected column
- Down: selects the next canvas in the selected column
- Right: selects the next canvas in the selected row
- Left: selects the previous canvas in the selected row
- Space: toggle recording of the selected canvas
- Shift+Space: toggle single-frame recording of the selected canvas
The calculation for selected row/colum is based on the `offsetWidth` of the parent element
and the selected item's content view element. Since this view uses a flexbox, all of the
items are expected to have the same dimensions, meaning that this value is uniform. The
intended functionality is that of a spreadsheet, where pressing pressing left/right will
never change the selected row and up/down will never change the selected column.
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview):
(.content-view.canvas-overview .content-view.canvas):
Move margin value to a CSS variable so that it can be easily retrieved via JavaScript.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype.contentViewAdded):
(WI.CanvasOverviewContentView.prototype.contentViewRemoved):
(WI.CanvasOverviewContentView.prototype.attached):
(WI.CanvasOverviewContentView.prototype.detached):
(WI.CanvasOverviewContentView.prototype.get _itemMargin):
(WI.CanvasOverviewContentView.prototype._changeSelectedItemVertically):
(WI.CanvasOverviewContentView.prototype._changeSelectedItemHorizontally):
(WI.CanvasOverviewContentView.prototype._updateNavigationItems):
(WI.CanvasOverviewContentView.prototype._handleUp):
(WI.CanvasOverviewContentView.prototype._handleRight):
(WI.CanvasOverviewContentView.prototype._handleDown):
(WI.CanvasOverviewContentView.prototype._handleLeft):
(WI.CanvasOverviewContentView.prototype._handleSpace):
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange):
Drive-by: call `_updateNavigationItems` whenever an item is added/removed so that if there
are no items the navigation items cannot be clicked.
2017-10-26 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: Make "Style Attribute" text darker and non-focusable
https://bugs.webkit.org/show_bug.cgi?id=178837
Reviewed by Brian Burg.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration .selector.style-attribute):
Use the same shade of gray as in the "Inherited from" sections.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
Only editable selectors should be focusable.
2017-10-26 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add CanvasOverview.svg and Canvas.svg
https://bugs.webkit.org/show_bug.cgi?id=178426
Reviewed by Carlos Garcia Campos.
* UserInterface/Images/gtk/Canvas.svg: Added.
* UserInterface/Images/gtk/CanvasOverview.svg: Added.
2017-10-25 Devin Rousso <webkit@devinrousso.com>
Web Inspector: provide a way to enable/disable event listeners
https://bugs.webkit.org/show_bug.cgi?id=177451
<rdar://problem/34994925>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager.prototype.setEventListenerDisabled):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WI.DOMNodeDetailsSidebarPanel.prototype.attached):
(WI.DOMNodeDetailsSidebarPanel.prototype.detached):
(WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
(WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners): Deleted.
(WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners): Deleted.
Listen for `WI.DOMNode.Event.EventListenersChanged` on all instances of WI.DOMNode, since we
will still want to refresh the event listeners section in the event that an event listener
is removed from a parent node.
* UserInterface/Views/EventListenerSectionGroup.js:
(WI.EventListenerSectionGroup):
(WI.EventListenerSectionGroup.prototype._eventText):
(WI.EventListenerSectionGroup.prototype._nodeTextOrLink):
(WI.EventListenerSectionGroup.prototype._createDisabledToggleElement):
(WI.EventListenerSectionGroup.prototype._createDisabledToggleElement.updateTitle):
* UserInterface/Views/EventListenerSectionGroup.css:
(.event-listener-section > .content input[type="checkbox"]):
* UserInterface/Views/DetailsSectionSimpleRow.js:
(WI.DetailsSectionSimpleRow.prototype.get label):
(WI.DetailsSectionSimpleRow.prototype.set label):
2017-10-25 Devin Rousso <webkit@devinrousso.com>
Web Inspector: replace TypeVerifier with subclasses of WI.Collection
https://bugs.webkit.org/show_bug.cgi?id=178045
<rdar://problem/35174307>
Reviewed by Brian Burg.
* UserInterface/Models/Collection.js:
(WI.Collection):
(WI.Collection.prototype.get displayName):
(WI.Collection.prototype.objectIsRequiredType):
(WI.Collection.prototype.add):
(WI.Collection.prototype.get typeVerifier): Deleted.
Instead of exposing the typeVerifier, we create a public predicate that returns whether the
given object matches the expected type of the Collection. Subclasses can override it to
limit the scope of the collection to a particular type.
* UserInterface/Models/CollectionTypes.js:
(WI.FrameCollection.prototype.get displayName):
(WI.FrameCollection.prototype.objectIsRequiredType):
(WI.FrameCollection): Deleted.
(WI.ScriptCollection.prototype.get displayName):
(WI.ScriptCollection.prototype.objectIsRequiredType):
(WI.ScriptCollection): Deleted.
(WI.CSSStyleSheetCollection.prototype.get displayName):
(WI.CSSStyleSheetCollection.prototype.objectIsRequiredType):
(WI.CSSStyleSheetCollection): Deleted.
(WI.CanvasCollection.prototype.get displayName):
(WI.CanvasCollection.prototype.objectIsRequiredType):
(WI.CanvasCollection): Deleted.
(WI.ShaderProgramCollection.prototype.get displayName):
(WI.ShaderProgramCollection.prototype.objectIsRequiredType):
(WI.ShaderProgramCollection): Deleted.
(WI.RecordingCollection.prototype.get displayName):
(WI.RecordingCollection.prototype.objectIsRequiredType):
(WI.RecordingCollection): Deleted.
* UserInterface/Models/ResourceCollection.js:
(WI.ResourceCollection):
(WI.ResourceCollection.prototype.get displayName):
(WI.ResourceCollection.prototype.objectIsRequiredType):
(WI.ResourceCollection.verifierForType): Deleted.
* UserInterface/Views/TreeOutlineGroup.js:
(WI.TreeOutlineGroup.prototype.objectIsRequiredType):
(WI.TreeOutlineGroup): Deleted.
Introduce additional subclasses of Collection for other model types. Modify existing
subclasses to remove `typeVerifier` and instead extend `objectIsRequiredType`.
* UserInterface/Models/Canvas.js:
(WI.Canvas):
* UserInterface/Models/Frame.js:
(WI.Frame):
* UserInterface/Protocol/Target.js:
(WI.Target):
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype.treeElementForRepresentedObject):
(WI.ResourceSidebarPanel.prototype._addScript):
* UserInterface/Views/CollectionContentView.js:
(WI.CollectionContentView):
(WI.CollectionContentView.titleForCollection): Delete.
* UserInterface/Views/ResourceCollectionContentView.js:
(WI.ResourceCollectionContentView):
Require that subclasses of Collection override `get displayName` if the CollectionContentView
is not provided with a `contentPlaceholderText`.
(WI.CollectionContentView.prototype.initialLayout):
We don't need to create and add ContentView for each item of the Collection, as this is
already done by attached().
(WI.CollectionContentView.prototype._showContentPlaceholder):
Remove the 250ms delay before showing the placeholder TitleView.
* UserInterface/Views/FolderizedTreeElement.js:
(WI.FolderizedTreeElement.prototype._settingsForRepresentedObject):
2017-10-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Display fetch() initiated loads as "fetch" instead of "xhr" in the Network Tab
https://bugs.webkit.org/show_bug.cgi?id=178826
Reviewed by Youenn Fablet.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.shortDisplayNameForResourceType):
Fetch and XHR loads are still grouped under the succinct "XHR" filter, but
at least display the better type name in the "Type" column of the table.
2017-10-25 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab: selected canvas card loses selection outline style while recording
https://bugs.webkit.org/show_bug.cgi?id=178814
<rdar://problem/35177317>
Reviewed by Brian Burg.
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas):
(.content-view.canvas-overview .content-view.canvas > :matches(header, .preview, footer)):
(.content-view.canvas-overview .content-view.canvas.selected > :matches(.preview, footer),):
(.content-view.canvas-overview .content-view.canvas > header):
(.content-view.canvas-overview .content-view.canvas.is-recording > header):
(.content-view.canvas-overview .content-view.canvas > .preview):
(.content-view.canvas-overview .content-view.canvas > footer):
(.content-view.canvas-overview .content-view.canvas.selected:not(.is-recording)): Deleted.
Instead of applying the border to the entire element, apply parts of the border to each of
its children so that we can choose what colors to use for each part.
2017-10-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: [PARITY] Styles Redesign: Add color gradient, bezier curve, and spring inline widgets
https://bugs.webkit.org/show_bug.cgi?id=178404
<rdar://problem/35035992>
Reviewed by Devin Rousso.
Add inline widgets for the following CSS values:
- Gradients, e.g. `background-image: linear-gradient(yellow, orange)`
- Bezier curves, e.g. `transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55)`
- Spring functions, e.g. `transition-timing-function: spring(1, 2, 2, 4)`
* UserInterface/Models/Color.js:
(WI.Color.prototype.toString):
Don't throw. The are never try/catch blocks on the callsites.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._renderValue):
(WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
(WI.SpreadsheetStyleProperty.prototype._addGradientTokens):
(WI.SpreadsheetStyleProperty.prototype._addColorTokens):
(WI.SpreadsheetStyleProperty.prototype._addTimingFunctionTokens):
2017-10-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: Newly added invalid property isn't immediately shown as invalid
https://bugs.webkit.org/show_bug.cgi?id=178488
Reviewed by Brian Burg.
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration.prototype.newBlankProperty):
Call this.update to update _properties, _allProperties, _visibleProperties, and _allVisibleProperties.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled)):
(.spreadsheet-style-declaration-editor .property.invalid-name:not(.disabled)):
(.spreadsheet-style-declaration-editor .property.invalid-value:not(.disabled) .value):
When the property name is valid, but the value isn't, display red line-through only for the value.
This is how it works in the old styles sidebar as well.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
(WI.SpreadsheetCSSStyleDeclarationEditor):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.updateClassNames):
(WI.SpreadsheetStyleProperty.prototype._update):
Introduce updateClassNames method. Unlike _update, it doesn't change text selection or focus and
can be safely called on a property while it's being edited.
2017-10-25 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab: clicking on a canvas card causes details sidebar to show and mess up card arrangement
https://bugs.webkit.org/show_bug.cgi?id=178803
<rdar://problem/35176082>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/CanvasDetailsSidebarPanel.css:
(.sidebar > .panel.details.canvas > .content > .empty-content-placeholder):
(.sidebar > .panel.details.canvas > .content > .empty-content-placeholder > .message):
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel):
(WI.CanvasDetailsSidebarPanel.prototype.inspect):
(WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
(WI.CanvasDetailsSidebarPanel.prototype.layout):
* UserInterface/Views/RecordingNavigationSidebarPanel.js:
(WI.RecordingNavigationSidebarPanel.disallowInstanceForClass): Deleted.
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel.disallowInstanceForClass): Deleted.
* UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
(WI.RecordingTraceDetailsSidebarPanel.disallowInstanceForClass): Deleted.
Drive-by: these sidebar panels are now only used by the Canvas tab, so we no longer need to
provide support for multiple instances of them.
2017-10-25 Devin Rousso <webkit@devinrousso.com>
Web Inspector: preserve Recordings for each Canvas after closing the Canvas tab
https://bugs.webkit.org/show_bug.cgi?id=178767
<rdar://problem/35167239>
Reviewed by Brian Burg.
* UserInterface/Test.html:
Include CollectionTypes for tests.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.recordingFinished):
* UserInterface/Models/Canvas.js:
(WI.Canvas):
(WI.Canvas.prototype.get recordingCollection):
* UserInterface/Models/CollectionTypes.js:
(WI.CanvasCollection):
(WI.RecordingCollection):
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._addRecording):
(WI.CanvasContentView.prototype._recordingStopped):
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype._recordingAdded):
2017-10-24 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION(r222181): Web Inspector: Augmenting Agents Domains are not getting activated
https://bugs.webkit.org/show_bug.cgi?id=178768
<rdar://problem/35081334>
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
Simplify event dispatch.
* UserInterface/Controllers/AppController.js:
(WI.AppController.prototype.activateExtraDomains):
Pass the domains on.
2017-10-24 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Console Drawer resizing doesn't match cursor position
https://bugs.webkit.org/show_bug.cgi?id=178753
<rdar://problem/35160484>
Reviewed by Brian Burg.
* UserInterface/Views/ConsoleDrawer.js:
(WI.ConsoleDrawer.prototype._updateDrawerHeight):
Drive-by fix an early return that would never have worked.
* UserInterface/Views/Main.css:
(#content):
Give the #content a flex grow of 1. This causes the space to grow as it
already was but now it does not affect the size of the fixed height sibling.
2017-10-24 Eric Carlson <eric.carlson@apple.com>
Web Inspector: Enable WebKit logging configuration and display
https://bugs.webkit.org/show_bug.cgi?id=177027
<rdar://problem/33964767>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js: Add new localized strings.
* UserInterface/Controllers/LogManager.js:
(WI.LogManager): Initialize _loggingChannelSources, fetch _customLoggingChannels.
(WI.LogManager.supportsLogChannels): New.
(WI.LogManager.prototype.get customLoggingChannels): New.
(WI.LogManager.prototype.get logChannelSources): New.
* UserInterface/Main.html:
* UserInterface/Models/ConsoleMessage.js: Add Media and WebRTC.
* UserInterface/Models/IssueMessage.js:
(WI.IssueMessage): Add media and webrtc.
* UserInterface/Models/LoggingChannel.js: Added.
(WI.LoggingChannel):
(WI.LoggingChannel.fromPayload):
(WI.LoggingChannel.prototype.get source):
(WI.LoggingChannel.prototype.get level):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView): Add new scope buttons for "Log", "Info", and "Debug". Create log channel
scope buttons once logging has started.
(WI.LogContentView.prototype.get navigationItems): Add the log message scope bar when necessary.
(WI.LogContentView.prototype._scopeFromMessageSource): New.
(WI.LogContentView.prototype._scopeFromMessageLevel): Don't group Info, Log, and Debug.
(WI.LogContentView.prototype._messageAdded): Force a UI update the first time a WebKit log
message is added.
(WI.LogContentView.prototype._messageShouldBeVisible): New, deal with message source bar buttons.
(WI.LogContentView.prototype._messageSourceBarSelectionDidChange): New.
(WI.LogContentView.prototype._filterMessageElements): Deal with message source bar buttons.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView): Create and initialize menus
for each log channel.
2017-10-24 Joseph Pecoraro <pecoraro@apple.com>
Uncaught Exception: TypeError: null is not an object (evaluating 'this.treeOutline.isXMLMimeType')
https://bugs.webkit.org/show_bug.cgi?id=178745
Reviewed by Brian Burg.
* UserInterface/Views/DOMTreeUpdater.js:
(WI.DOMTreeUpdater.prototype._updateModifiedNodes):
An earlier tree element update might have caused this other tree element's
waiting to be updated to actually be removed. So just skip past them.
2017-10-24 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add Recording.svg
https://bugs.webkit.org/show_bug.cgi?id=175045
Reviewed by Brian Burg.
* UserInterface/Images/gtk/Recording.svg: Added.
2017-10-24 Devin Rousso <webkit@devinrousso.com>
Web Inspector: allow ShaderProgram to be shown in CanvasContentView
https://bugs.webkit.org/show_bug.cgi?id=178714
Reviewed by Brian Burg.
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel.prototype.inspect):
Allow ShaderProgram to show the related Canvas information.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.canShowRepresentedObject):
(WI.CanvasTabContentView.prototype.showRepresentedObject):
(WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
If a ShaderProgram is selected in the path component, display a ShaderProgramContentView.
2017-10-24 Devin Rousso <webkit@devinrousso.com>
Web Inspector: remove canvases from Resources and experimental setting/UI
https://bugs.webkit.org/show_bug.cgi?id=178711
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WI.tabContentViewClassForRepresentedObject):
* UserInterface/Base/Setting.js:
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.canvasAdded):
(WI.CanvasManager.prototype.canvasRemoved):
* UserInterface/Models/Canvas.js:
* UserInterface/Models/Frame.js:
(WI.Frame):
(WI.Frame.prototype.get extraScriptCollection):
(WI.Frame.prototype.commitProvisionalLoad):
(WI.Frame.prototype.get canvasCollection): Deleted.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.isTabAllowed):
* UserInterface/Views/FrameTreeElement.js:
(WI.FrameTreeElement):
(WI.FrameTreeElement.prototype.onattach):
(WI.FrameTreeElement.prototype.ondetach):
(WI.FrameTreeElement.prototype.onpopulate):
(WI.FrameTreeElement.prototype._styleSheetAdded):
(WI.FrameTreeElement.prototype._canvasWasAdded): Deleted.
(WI.FrameTreeElement.prototype._canvasWasRemoved): Deleted.
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel):
(WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
(WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
(WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/ResourcesTabContentView.js:
(WI.ResourcesTabContentView):
(WI.ResourcesTabContentView.prototype.canShowRepresentedObject):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2017-10-24 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Show recordings in CanvasTabContentView
https://bugs.webkit.org/show_bug.cgi?id=177606
<rdar://problem/34715819>
Reviewed by Brian Burg.
Original patch by Matt Baker <mattbaker@apple.com>.
This patch folds canvas recordings into the new Canvas tab, which now
supports showing both CanvasCollections and Recordings.
When viewing recordings, a back button is shown at the start of the
navigation bar, allowing the user to return to the overview. It has been
styled with a back arrow, to make its function as clear as possible.
Like other navigation path components, the item for the recording can
clicked to select another recording taken from the same canvas.
The recording action scrubber has been moved from the content browser's
navigation bar to a more prominent location in the recording content view.
Selecting a frame tree element in the navigation sidebar no longer selects
the last action for that frame. This was changed to prevent the scrubber
position from behaving non-monotonically when selecting actions in sequential
order.
While this patch retains support for importing recordings, the feature
is not polished. Currently it is not possible to return to an imported
recording after leaving closing the view. In the future we may want to
consider including a navigation sidebar panel for the overview, which
could list canvas recordings (and eventually shaders).
* .eslintrc:
Drive-by: remove duplicate key.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
(WI.tabContentViewClassForRepresentedObject):
* UserInterface/Main.html:
* UserInterface/Views/RecordingTabContentView.js: Removed.
Remove RecordingTabContentView.
* UserInterface/Images/Recording.svg:
New recording icon, used for tree elements and canvas preview UI.
* UserInterface/Models/Recording.js:
(WI.Recording):
(WI.Recording.prototype.get visualActionIndexes):
Visual action indexes should be computed by the recording.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.refresh):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype._recordingStopped):
(WI.CanvasContentView.prototype._handleRecordingSelectElementChange):
New UI for showing CanvasContentView as a CollectionView item. Includes
recordings button and select for choosing a recording to view.
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas > header):
Switch to 13px, which is more frequently used.
(.content-view.canvas-overview .content-view.canvas > header .subtitle::before):
Switch to literal em dash. Surrounding spaces were ignored when using
the backslash-escaped character.
(.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording, .selected) > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings::before):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings > select):
(.content-view.canvas-overview .content-view.canvas > footer .recordings > select:focus):
(.content-view.canvas-overview .content-view.canvas > footer > .flexible-space):
(.popover-content > .tree-outline .item.recording > .icon):
(.popover-content > .tree-outline .item.recording:hover):
(.popover-content > .tree-outline .item.recording:hover > .icon):
(.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording) > header > .navigation-bar): Deleted.
(.content-view.canvas-overview .content-view.canvas > footer): Deleted.
New styles for the recording picker.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype.get selectionPathComponents):
(WI.CanvasOverviewContentView.prototype.contentViewAdded):
(WI.CanvasOverviewContentView.prototype.contentViewRemoved):
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange):
(WI.CanvasOverviewContentView.prototype._selectedPathComponentChanged): Deleted.
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange.createCanvasPathComponent): Deleted.
Canvas tree elements are now managed by CanvasTabContentView, which is
now responsible for maintaining the tree of canvas objects. For now the
tree holds canvases and recordings, but will eventually include shader programs.
* UserInterface/Views/CanvasTabContentView.css:
(.content-view.tab.canvas .navigation-bar > .item .recording > .icon):
(.content-view.tab.canvas .navigation-bar > .item > .canvas-overview > .icon): Deleted.
Add styles for recording path components.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.treeElementForRepresentedObject):
(WI.CanvasTabContentView.prototype.canShowRepresentedObject):
(WI.CanvasTabContentView.prototype.showRepresentedObject):
(WI.CanvasTabContentView.prototype.shown):
(WI.CanvasTabContentView.prototype.restoreStateFromCookie):
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype.detached):
(WI.CanvasTabContentView.prototype._canvasAdded):
(WI.CanvasTabContentView.prototype._canvasRemoved):
(WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
(WI.CanvasTabContentView.prototype._recordingStopped):
(WI.CanvasTabContentView.prototype._navigationSidebarImport):
(WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged):
(WI.CanvasTabContentView.prototype._recordingAdded):
(WI.CanvasTabContentView.prototype._recordingActionIndexChanged):
(WI.CanvasTabContentView.prototype._updateActionIndex):
(WI.CanvasTabContentView.prototype.restoreFromCookie): Deleted.
(WI.CanvasTabContentView.prototype._overviewPathComponentClicked): Deleted.
* UserInterface/Views/ContentView.js:
(WI.ContentView.createFromRepresentedObject):
* UserInterface/Views/RecordingActionTreeElement.css:
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,):
(body:not(.window-inactive, .window-docked-inactive) :matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,): Deleted.
* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording):
(.content-view:not(.tab).recording > header):
(.content-view:not(.tab).recording > header > .slider-container):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]::-webkit-slider-runnable-track):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]::-webkit-slider-thumb):
(.content-view:not(.tab).recording > .preview-container):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.initialLayout):
(WI.RecordingContentView.prototype.async._generateContentCanvas2D):
(WI.RecordingContentView.prototype._updateSliderValue):
(WI.RecordingContentView.prototype._sliderChanged):
(WI.RecordingContentView.prototype.get supplementalRepresentedObjects): Deleted.
* UserInterface/Views/RecordingNavigationSidebarPanel.js:
(WI.RecordingNavigationSidebarPanel.prototype.set recording):
(WI.RecordingNavigationSidebarPanel.prototype.updateActionIndex):
* UserInterface/Views/ResourceIcons.css:
(.canvas .icon):
(.canvas.canvas-2d .icon): Deleted.
(.canvas:matches(.webgl, .webgl2, .webgpu) .icon): Deleted.
2017-10-24 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Layer mutations should be purely based on layerId, not based on nodeId
https://bugs.webkit.org/show_bug.cgi?id=178554
Reviewed by Devin Rousso.
* UserInterface/Controllers/LayerTreeManager.js:
(WI.LayerTreeManager.prototype.layerTreeMutations):
Looking for special cases involving nodeIds is incorrect, as nodeIds need not be unique in the layer list (such
as when an element and a pseudo-element thereof each give rise to a layer). A layer object marked "preserved" in
this way shares no data with its predecessor, meaning that no consumer can act upon this so-called preservation.
A preserved layer should be nothing more or less than a recycled layerId (the thing that *is* unique).
2017-10-23 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: Inline widgets don't hide when starting editing by tabbing from property name
https://bugs.webkit.org/show_bug.cgi?id=178638
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
Blur event on the property name text field caused WI.SpreadsheetStyleProperty.prototype._renderValue,
which displayed inline swatches. Display inline swatches only after blur event on the property value.
2017-10-23 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Please support HAR Export for network traffic
https://bugs.webkit.org/show_bug.cgi?id=146692
<rdar://problem/7463672>
Reviewed by Brian Burg.
* UserInterface/Main.html:
* UserInterface/Test.html:
New resources.
* UserInterface/Base/Platform.js:
Include a build number as well.
* UserInterface/Base/URLUtilities.js:
(parseLocationQueryParameters): Deleted.
Remove unused function.
* UserInterface/Controllers/FrameResourceManager.js:
(WI.FrameResourceManager.prototype.frameDidNavigate):
(WI.FrameResourceManager.prototype.resourceRequestWillBeSent):
(WI.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
(WI.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
(WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
Pass along a walltime.
* UserInterface/Protocol/NetworkObserver.js:
(WI.NetworkObserver.prototype.requestWillBeSent):
Pass along a walltime. This new parameter shifts old parameters.
* UserInterface/Controllers/HARBuilder.js: Added.
(WI.HARBuilder.async.buildArchive):
(WI.HARBuilder.creator):
(WI.HARBuilder.pages):
(WI.HARBuilder.pageTimings):
(WI.HARBuilder.entry):
(WI.HARBuilder.request):
(WI.HARBuilder.response):
(WI.HARBuilder.cookies):
(WI.HARBuilder.headers):
(WI.HARBuilder.content):
(WI.HARBuilder.postData):
(WI.HARBuilder.cache):
(WI.HARBuilder.timings):
(WI.HARBuilder.ipAddress):
(WI.HARBuilder.date):
(WI.HARBuilder.fetchType):
HAR construction and helpers.
* UserInterface/Models/Cookie.js:
(WI.Cookie.prototype.expirationDate):
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.get queryStringParameters):
(WI.Resource.prototype.get requestFormParameters):
(WI.Resource.prototype.get requestSentWalltime):
(WI.Resource.prototype.get requestSentDate):
(WI.Resource.prototype.hasRequestFormParameters):
Helpers for HAR generation and sub-sets of data.
* UserInterface/Models/SourceCode.js:
(WI.SourceCode.prototype._processContent):
Capture the raw, unmodified, base64 encoded flag and content. This ends
up getting used by HAR generation and is otherwise lost.
* UserInterface/Test/TestHarness.js:
(TestHarness.prototype.json):
Helper for just logging JSON data with a filter. This defaults to
a reasonable 2 space indent for JSON logs in our test output.
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype.get saveData):
(WI.DOMTreeContentView.get saveData.saveHandler): Deleted.
Drive-by simplify while looking at other save handlers.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.get supportsSave):
(WI.NetworkTableContentView.prototype.get saveData):
(WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
(WI.NetworkTableContentView.prototype._HARResources):
(WI.NetworkTableContentView.prototype._exportHAR):
Provide a context menu and save keyboard handler to export a HAR.
This matches other browsers.
* UserInterface/Views/ResourceClusterContentView.js:
(WI.ResourceClusterContentView.prototype._canShowRequestContentView):
Use code that is now available in Resource.
2017-10-20 Matt Baker <mattbaker@apple.com>
Web Inspector: scrolling the editor while debugging shouldn't trigger popovers
https://bugs.webkit.org/show_bug.cgi?id=178325
Reviewed by Devin Rousso.
Ignore the next "mousemove" event immediately following a "mousewheel",
when determining the hovered item for purposes of triggering a popover.
* UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
(WI.CodeMirrorTokenTrackingController):
(WI.CodeMirrorTokenTrackingController.prototype._startTracking):
(WI.CodeMirrorTokenTrackingController.prototype._stopTracking):
(WI.CodeMirrorTokenTrackingController.prototype.handleEvent):
(WI.CodeMirrorTokenTrackingController.prototype._mouseMovedOverEditor):
2017-10-20 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: preview content view for MIME type application/json should be a collapsible tree outline
https://bugs.webkit.org/show_bug.cgi?id=158938
<rdar://problem/26891128>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New files and strings.
* UserInterface/Views/JSONResourceContentView.css: Added.
(.content-view.resource.json):
(.content-view.resource.json .object-tree .prototype-property):
Some padding and scrolling for the JSON content view.
* UserInterface/Views/JSONResourceContentView.js: Added.
(WI.JSONResourceContentView):
(WI.JSONResourceContentView.customContentViewDisplayName):
(WI.JSONResourceContentView.prototype.contentAvailable):
(WI.JSONResourceContentView.prototype.closed):
JSON view evaluates the JSON content on the page and shows an ObjectTree
for the resulting object.
* UserInterface/Views/ResourceClusterContentView.js:
(WI.ResourceClusterContentView):
(WI.ResourceClusterContentView.prototype.get customResponseContentView):
(WI.ResourceClusterContentView.prototype.get selectionPathComponents):
(WI.ResourceClusterContentView.prototype.restoreFromCookie):
(WI.ResourceClusterContentView.prototype.showResponse):
(WI.ResourceClusterContentView.prototype._canShowRequestContentView):
(WI.ResourceClusterContentView.prototype._canShowCustomResponseContentView):
(WI.ResourceClusterContentView.prototype._pathComponentForContentView):
(WI.ResourceClusterContentView.prototype._identifierForContentView):
(WI.ResourceClusterContentView.prototype._showContentViewForIdentifier):
(WI.ResourceClusterContentView.prototype._resourceTypeDidChange):
(WI.ResourceClusterContentView.prototype._resourceLoadingDidFinish):
(WI.ResourceClusterContentView.prototype._tryEnableCustomResponseContentView):
(WI.ResourceClusterContentView.prototype._customContentViewConstructorForResource):
Allow a custom content view to be used for a resource based on the response.
Currently the only custom content view is the JSON content view.
2017-10-20 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Turn on the new tab by default, remove the legacy network tab
https://bugs.webkit.org/show_bug.cgi?id=178559
<rdar://problem/34985503>
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
* UserInterface/Base/Setting.js:
* UserInterface/Main.html:
* UserInterface/Views/LegacyNetworkSidebarPanel.css: Removed.
* UserInterface/Views/LegacyNetworkSidebarPanel.js: Removed.
* UserInterface/Views/LegacyNetworkTabContentView.js: Removed.
* UserInterface/Views/NetworkGridContentView.css: Removed.
* UserInterface/Views/NetworkGridContentView.js: Removed.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
Remove LegacyNetwork tab, its NetworkGridContentView, and associated content.
* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView.isTabAllowed):
Simplify now that this is the only Network tab.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
Remove experimental setting.
2017-10-19 Joseph Pecoraro <pecoraro@apple.com>
Unreviewed localized strings update.
* Localizations/en.lproj/localizedStrings.js:
Add missing string after r223735.
2017-10-19 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab: Metrics Detail View
https://bugs.webkit.org/show_bug.cgi?id=178323
<rdar://problem/34071929>
Reviewed by Devin Rousso.
Provide a Metrics detail view for resources in the Network tab.
This detail view shows:
- Transfer Size information (Header + Body bytes)
- Resource Size information (Compression, MIME)
- Timing information (ResourceTiming, Waterfall breakdown)
The display of timing information isn't quite final. But this
is a good starting point for all the information.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New resources and strings.
* UserInterface/Base/MIMETypeUtilities.js:
(WI.shouldTreatMIMETypeAsText):
Helper for detecting text resources.
* UserInterface/Images/Receiving.svg: Added.
* UserInterface/Images/Sending.svg: Added.
* UserInterface/Images/gtk/Receiving.svg: Added.
* UserInterface/Images/gtk/Sending.svg: Added.
Same images for main and linux ports with different licenses.
* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.metricsContentViewGoToHeaders):
(WI.NetworkResourceDetailView.prototype.metricsContentViewGoToRequestBody):
(WI.NetworkResourceDetailView.prototype.metricsContentViewGoToResponseBody):
(WI.NetworkResourceDetailView.prototype.initialLayout):
(WI.NetworkResourceDetailView.prototype._showPreferredContentView):
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
Replace "Timing" and "Details" stubs with a single "Metrics" section.
Handle delegate cases from the Metrics content view.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.displayNameForResource):
(WI.NetworkTableContentView.prototype._displayType): Deleted.
(WI.NetworkTableContentView.prototype._entryForResource):
Promote this to a static helper in case anyone else wants it.
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.networkResourceDetailViewClose):
Reorder code a bit to reduce work since hiding the detail view currently
forces a layout.
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView):
(WI.ResourceHeadersContentView.prototype._refreshRequestDataSection):
(WI.ResourceHeadersContentView.prototype._resourceResponseReceived):
(WI.ResourceHeadersContentView.prototype._goToRequestDataClicked): Deleted.
Simplify by making the delegate required.
* UserInterface/Views/ResourceMetricsContentView.css: Added.
(.resource-metrics):
(.resource-metrics > .content):
(.resource-metrics > .content .label):
General metrics styles.
(.resource-metrics > .content > section):
(.resource-metrics > .content > section .subtitle):
(.resource-metrics > .content > section:not(:last-of-type)):
(.resource-metrics > .content > section.split):
(.resource-metrics > .content > section.split > .subsection):
(.resource-metrics > .content > section.split > .subsection > table):
(.resource-metrics > .content > section.split > .divider):
(.resource-metrics > .content > section.network > .subsection > .container):
(.resource-metrics > .content > section.network .bytes-group):
(.resource-metrics > .content > section.network .bytes):
(body[dir=ltr] .resource-metrics > .content > section.network table > tr > td.label):
(body[dir=rtl] .resource-metrics > .content > section.network table > tr > td.label):
(.resource-metrics > .content > section.network .suffix):
(.resource-metrics > .content > section.network img):
(.resource-metrics > .content > section.network .go-to-arrow):
(.resource-metrics > .content > section.network .warning):
Styles for Sizes sections.
(.resource-metrics > .content > section.timing):
(.resource-metrics > .content > section.timing .subtitle):
(.resource-metrics > .content > section.timing > ul):
(.resource-metrics > .content > section.timing > ul > li):
(.resource-metrics > .content > section.timing > .waterfall):
(.resource-metrics > .content > section.timing > .waterfall .block):
(.resource-metrics > .content > section.timing > ul > li > .row-label):
(body[dir=ltr] .resource-metrics > .content > section.timing > ul > li > .row-label):
(body[dir=rtl] .resource-metrics > .content > section.timing > ul > li > .row-label):
(.resource-metrics > .content > section.timing > ul > li > .time-label):
(.resource-metrics > .content > section.timing > ul > li.total .block):
(.resource-metrics > .content > section.timing > ul > li.total .time-label):
(.resource-metrics > .content > section.timing .indeterminate-progress-spinner):
(.resource-metrics > .content > section.timing .empty):
Styles for Timing section.
* UserInterface/Views/ResourceMetricsContentView.js: Added.
(WI.ResourceMetricsContentView):
(WI.ResourceMetricsContentView.prototype.initialLayout.createSizeComponents):
(WI.ResourceMetricsContentView.prototype.initialLayout):
(WI.ResourceMetricsContentView.prototype.layout):
(WI.ResourceMetricsContentView.prototype.closed):
(WI.ResourceMetricsContentView.prototype._sizeComponents):
(WI.ResourceMetricsContentView.prototype._refreshTransferSizeSections.appendGoToArrow):
(WI.ResourceMetricsContentView.prototype._refreshTransferSizeSections):
(WI.ResourceMetricsContentView.prototype._refreshResourceSizeSection):
(WI.ResourceMetricsContentView.prototype._refreshTimingSection.createBlock):
(WI.ResourceMetricsContentView.prototype._refreshTimingSection.createTimeLabel):
(WI.ResourceMetricsContentView.prototype._refreshTimingSection.createRow):
(WI.ResourceMetricsContentView.prototype._refreshTimingSection):
(WI.ResourceMetricsContentView.prototype._resourceSizeDidChange):
(WI.ResourceMetricsContentView.prototype._resourceTransferSizeDidChange):
(WI.ResourceMetricsContentView.prototype._resourceMetricsDidChange):
(WI.ResourceMetricsContentView.prototype._resourceTimestampsDidChange):
Metrics content. This just creates all of the elements, and saves a
few to get populated with data later on.
2017-10-19 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Improve graphical representation of network waterfall
https://bugs.webkit.org/show_bug.cgi?id=147897
<rdar://problem/27482198>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New strings and resources.
* UserInterface/Views/Variables.css:
(:root):
Global styles.
* UserInterface/Views/NetworkTableContentView.css:
(.network-table .header .cell.waterfall):
(.network-table .timeline-ruler):
(.network-table .timeline-ruler > .header):
Styles for having a TimelineRuler in the Waterfall's table header.
(.network-table :not(.header) .cell.waterfall):
(.network-table :not(.header) .cell.waterfall .waterfall-container):
(.waterfall .block):
(.waterfall .block.request,):
(.waterfall .block.mouse):
(.waterfall .block.queue):
(.waterfall .block.dns):
(.waterfall .block.connect):
(.waterfall .block.secure):
(.waterfall .block.request):
(.waterfall .block.response):
Waterfall styles inside the Network Table.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.tablePopulateCell):
(WI.NetworkTableContentView.prototype.initialLayout):
(WI.NetworkTableContentView.prototype._updateWaterfallTimelineRuler):
(WI.NetworkTableContentView.prototype._updateEntryForResource):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
(WI.NetworkTableContentView.prototype._networkTimelineRecordAdded):
(WI.NetworkTableContentView.prototype._tableWaterfallColumnDidChangeWidth):
Update the TimelineRuler and Waterfall column when the column's
size changes or the time bounds change. The time bounds right now
are the earliest and latest time of resources. Later we hope to
bound this by a timeline selection.
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
(WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.appendBlock):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph):
(WI.NetworkTableContentView.prototype._hidePopover):
Create and manage a popover for the waterfall column.
* UserInterface/Views/Popover.js:
(WI.Popover):
(WI.Popover.prototype.get element):
(WI.Popover.prototype.get visible):
(WI.Popover.prototype.get backgroundStyle):
(WI.Popover.prototype.set backgroundStyle):
(WI.Popover.prototype._drawBackground):
Provide an option to have a white background popover.
* UserInterface/Views/ResourceTimingBreakdownView.css: Added.
(.resource-timing-breakdown):
(.resource-timing-breakdown .waterfall):
(.resource-timing-breakdown .waterfall .block):
(.resource-timing-breakdown .waterfall .block.request):
(body[dir=ltr] .resource-timing-breakdown .waterfall .block.queue,):
(body[dir=ltr] .resource-timing-breakdown .waterfall .block.response):
(body[dir=rtl] .resource-timing-breakdown .waterfall .block.queue,):
(body[dir=rtl] .resource-timing-breakdown .waterfall .block.response):
(.resource-timing-breakdown .numbers):
(body[dir=ltr] .resource-timing-breakdown .numbers):
(body[dir=rtl] .resource-timing-breakdown .numbers):
Waterfall styles and sizes in the popover's breakdown view.
(.resource-timing-breakdown .numbers > p):
(.resource-timing-breakdown .numbers > p > .swatch):
(.resource-timing-breakdown .numbers .swatch.queue):
(.resource-timing-breakdown .numbers .swatch.dns):
(.resource-timing-breakdown .numbers .swatch.connect):
(.resource-timing-breakdown .numbers .swatch.secure):
(.resource-timing-breakdown .numbers .swatch.request):
(.resource-timing-breakdown .numbers .swatch.response):
(.resource-timing-breakdown .numbers > p > .label):
(.resource-timing-breakdown .numbers > p.total):
Number and label styles in the popover's breakdown view.
* UserInterface/Views/ResourceTimingBreakdownView.js: Added.
(WI.ResourceTimingBreakdownView):
(WI.ResourceTimingBreakdownView.prototype.initialLayout):
(WI.ResourceTimingBreakdownView.prototype.initialLayout.appendBlock):
(WI.ResourceTimingBreakdownView.prototype.initialLayout.appendRow):
Show a section for a waterfall visualization and a section for the numbers.
* UserInterface/Views/Table.js:
(WI.Table.prototype.reloadVisibleColumnCells):
(WI.Table.prototype.cellForRowAndColumn):
(WI.Table.prototype.addColumn):
(WI.Table.prototype.showColumn):
(WI.Table.prototype.hideColumn):
(WI.Table.prototype.resizerDragging):
(WI.Table.prototype.resizerDragEnded):
(WI.Table.prototype._resizeColumnsAndFiller):
(WI.Table.prototype._applyColumnWidths):
(WI.Table.prototype._positionHeaderViews):
* UserInterface/Views/TableColumn.js:
(WI.TableColumn.prototype.get headerView):
Provide a way to include a WI.View with a TableColumn Header. This
matches what we do with DataGrid, and ends up being pretty concise.
* UserInterface/Views/TimelineRuler.css:
(.timeline-ruler > .header):
Make the height a variable so that other code can work off of it.
2017-10-19 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Remove superfluous file External/.eslintrc
https://bugs.webkit.org/show_bug.cgi?id=178474
Reviewed by Joseph Pecoraro.
* UserInterface/External/.eslintrc: Removed.
2017-10-19 Adrian Perez de Castro <aperez@igalia.com>
[GTK] Inspector UI does not use system font despite -webkit-system-font being supported
https://bugs.webkit.org/show_bug.cgi?id=178388
Reviewed by Joseph Pecoraro.
Change ocurrences of the "-apple-system" generic font name to
"-webkit-system-font", which is also implemented by the GTK+ port.
* UserInterface/Views/CodeMirrorOverrides.css:
(.CodeMirror .CodeMirror-linenumber):
(.CodeMirror .CodeMirror-placeholder):
* UserInterface/Views/ConsoleMessageView.css:
(.console-user-command.special-user-log > .console-message-text):
(.console-message .console-message-extra-parameters-container > li::before):
(.console-message .console-message-location):
* UserInterface/Views/DataGrid.css:
(.data-grid td):
* UserInterface/Views/DefaultDashboardView.css:
(.toolbar .dashboard.default > .item):
* UserInterface/Views/HeapSnapshotInstancesContentView.css:
(.heap-snapshot-instance-popover-content > .title):
* UserInterface/Views/HierarchicalPathComponent.css:
(.hierarchical-path-component):
* UserInterface/Views/LogContentView.css:
(.console-messages):
* UserInterface/Views/Main.css:
(body):
* UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:
(.object-tree-array-index .index-name):
* UserInterface/Views/ObjectTreePropertyTreeElement.css:
(.object-tree-property .property-name,):
* UserInterface/Views/ObjectTreeView.css:
(.tree-outline.object li .empty-message):
* UserInterface/Views/RecordingActionTreeElement.css:
(.item.action:not(.initial-state)::before):
* UserInterface/Views/SourceCodeTextEditor.css:
(.source-code.text-editor > .CodeMirror .line-indicator-widget > .text):
(.popover .debugger-popover-content > .title):
* UserInterface/Views/TypeTreeView.css:
(.type-tree):
* UserInterface/Views/VisualStyleFontFamilyTreeElement.js:
2017-10-18 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Layers sidebar footer should not have white background with full-width quick console
https://bugs.webkit.org/show_bug.cgi?id=178493
Reviewed by Matt Baker.
* UserInterface/Views/LayerDetailsSidebarPanel.css:
Update CSS for new sidebar.
* UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
Update CSS for legacy sidebar.
2017-10-18 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add Layers.svg
https://bugs.webkit.org/show_bug.cgi?id=178430
Reviewed by Michael Catanzaro.
* UserInterface/Images/gtk/Layers.svg: Added.
2017-10-18 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r223321.
https://bugs.webkit.org/show_bug.cgi?id=178476
This protocol change broke some internal builds (Requested by
brrian__ on #webkit).
Reverted changeset:
"Web Inspector: provide a way to enable/disable event
listeners"
https://bugs.webkit.org/show_bug.cgi?id=177451
https://trac.webkit.org/changeset/223321
2017-10-17 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: [PARITY] Styles Redesign: Add color picker inline widget
https://bugs.webkit.org/show_bug.cgi?id=178354
Reviewed by Joseph Pecoraro.
Show color picker using the existing WI.InlineSwatch.
* UserInterface/Models/Color.js:
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property:not(.disabled) .token-comment):
Syntax highlight comments in values.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._renderValue):
(WI.SpreadsheetStyleProperty.prototype._addColorTokens):
Find colors in CodeMirror tokens and replace them with color token elements.
2017-10-17 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Command-click on a property name should jump to definition in Resources tab
https://bugs.webkit.org/show_bug.cgi?id=174329
<rdar://problem/33225564>
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Main.js:
Add "meta-key-pressed" class to <body> when Command key is pressed.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.meta-key-pressed .spreadsheet-css-declaration:not(.locked) :matches(.name, .value):not(.editing):hover):
Use the same styles as in CodeMirrorTokenTrackingController.css.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._update):
(WI.SpreadsheetStyleProperty.prototype._setupJumpToSymbol):
This is very similar to WI.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked,
except it doesn't include special cases for CSS variables and links yet.
2017-10-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: apply syntax highlighting to property values
https://bugs.webkit.org/show_bug.cgi?id=178176
Reviewed by Matt Baker.
- Highlight links blue and CSS strings dark red.
- Truncate URLs and strings over 150 characters.
* UserInterface/Views/CodeMirrorAdditions.js:
Parse CSS values using CodeMirror.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property:not(.disabled) .token-link):
(.spreadsheet-style-declaration-editor .property:not(.disabled) .token-string):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._update):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldWillStartEditing):
Replace trancated values with their full version.
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
(WI.SpreadsheetStyleProperty.prototype._renderValue):
Highlight links and CSS strings in values when not editing.
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype.startEditing):
Disabling of syntax highlighting moved to spreadsheetTextFieldWillStartEditing.
* UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
(.syntax-highlighted a):
* UserInterface/Views/Variables.css:
(:root):
Make link color a variable.
2017-10-16 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Layers tab mistakenly throws out the root element's layer.
https://bugs.webkit.org/show_bug.cgi?id=178222
Reviewed by Brian Burg.
* UserInterface/Controllers/LayerTreeManager.js:
(WI.LayerTreeManager.prototype.layersForNode):
Fix the issue at the manager level.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView.prototype.layout):
Update new sidebar based on simplified manager API.
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WI.LayerTreeDetailsSidebarPanel.prototype.layout):
Move overtailored code from manager to legacy sidebar.
2017-10-15 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Modify CSS number values with up key and down key
https://bugs.webkit.org/show_bug.cgi?id=170779
<rdar://problem/33170633>
Reviewed by Matt Baker.
Up key increments a number, Down key decrements it.
Holding modifier keys changes the step value:
- Option modifies the value by 0.1
- Shift modifies the value by 10
- Command modifies the value by 100
* UserInterface/Test.html:
* UserInterface/Views/EditingSupport.js:
(WI.incrementElementValue):
Abstract away incrementElementValue into a public method.
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._handleKeyDown):
2017-10-15 Devin Rousso <webkit@devinrousso.com>
Web Inspector: show warning when recorded Canvas action caused no visual change
https://bugs.webkit.org/show_bug.cgi?id=175282
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.prototype.get valid):
(WI.RecordingAction.prototype.get hasVisibleEffect):
(WI.RecordingAction.prototype.markInvalid):
(WI.RecordingAction.prototype.apply):
(WI.RecordingAction.prototype.async._swizzle):
If the selected action is visual, save a copy of the preview canvas' dataURL before
applying the action and compare it to its dataURL after. If there is no difference, the
action had no visual effect.
* UserInterface/Models/Recording.js:
(WI.Recording):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement):
(WI.RecordingActionTreeElement.prototype._handleValidityChanged):
(WI.RecordingActionTreeElement.prototype._handleHasVisibleEffectChanged):
* UserInterface/Views/RecordingActionTreeElement.css:
(.item.action.visual.no-visible-effect:not(.invalid) > .status > .warning):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.async._generateContentCanvas2D):
(WI.RecordingContentView.prototype._applyAction): Deleted.
2017-10-15 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: [PARITY] Styles Redesign: clicking on the go-to arrow in Computed tab should work
https://bugs.webkit.org/show_bug.cgi?id=178286
<rdar://problem/34986379>
Reviewed by Joseph Pecoraro.
Highlight the matching property using a yellow background and focus on the property value
if the property is editable (e.g., not a User Agent style).
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor):
(.spreadsheet-style-declaration-editor .property):
Move left padding to the property element so there's no awkward gap on the left side
when the property is highlighted.
(.spreadsheet-style-declaration-editor .property.highlighted):
(@keyframes style-property-highlight):
Use the same animation duration as we used in `.text-editor > .CodeMirror .highlighted`.
The highlight color was changed from light blue to yellow.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty):
Use the same logic as in WI.CSSStyleDeclarationTextEditor.prototype.highlightProperty
to find matching style property to highlight.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.highlightProperty):
Use the same logic as in WI.CSSStyleDeclarationSection.prototype.highlightProperty.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.scrollToSectionAndHighlightProperty):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.nodeStylesRefreshed):
Copied from WI.RulesStyleDetailsPanel.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.detached):
(WI.SpreadsheetStyleProperty.prototype.highlight):
2017-10-14 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r223310): Web Inspector: Class list container is transparent and unreadable
https://bugs.webkit.org/show_bug.cgi?id=178311
Reviewed by Devin Rousso.
* UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
(.sidebar > .panel.details.css-style > .content ~ .class-list-container):
Fix 1px hole below the class container.
2017-10-14 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas tab: recordings should have a unique name
https://bugs.webkit.org/show_bug.cgi?id=178188
<rdar://problem/34943364>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
New format string "Recording %d".
* UserInterface/Base/FileUtilities.js:
(WI.loadDataFromFile):
Pass chosen filename to callback.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.recordingFinished):
Create a unique name for the recording.
* UserInterface/Models/Recording.js:
(WI.Recording):
(WI.Recording.fromPayload):
(WI.Recording.prototype.get displayName):
(WI.Recording.prototype.createDisplayName):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype.get saveData):
Use encodeURI so that special characters can be used in filenames, and
to be consistent with other `saveData` implementations.
* UserInterface/Views/RecordingNavigationSidebarPanel.js:
(WI.RecordingNavigationSidebarPanel.prototype.set recording):
(WI.RecordingNavigationSidebarPanel.prototype._importNavigationItemClicked):
Drive-by fix: wait until actions are resolved before updating UI.
* UserInterface/Views/RecordingTabContentView.js:
(WI.RecordingTabContentView.prototype._navigationSidebarImport):
Try to use the imported filename as the recording name. If the name
collides with that of another imported recording, append a unique suffix.
2017-10-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: provide a way to enable/disable event listeners
https://bugs.webkit.org/show_bug.cgi?id=177451
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager.prototype.setEventListenerDisabled):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WI.DOMNodeDetailsSidebarPanel.prototype.attached):
(WI.DOMNodeDetailsSidebarPanel.prototype.detached):
(WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
(WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners): Deleted.
(WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners): Deleted.
Listen for `WI.DOMNode.Event.EventListenersChanged` on all instances of WI.DOMNode, since we
will still want to refresh the event listeners section in the event that an event listener
is removed from a parent node.
* UserInterface/Views/EventListenerSectionGroup.js:
(WI.EventListenerSectionGroup):
(WI.EventListenerSectionGroup.prototype._eventText):
(WI.EventListenerSectionGroup.prototype._nodeTextOrLink):
(WI.EventListenerSectionGroup.prototype._createDisabledToggleElement):
(WI.EventListenerSectionGroup.prototype._createDisabledToggleElement.updateTitle):
* UserInterface/Views/EventListenerSectionGroup.css:
(.event-listener-section > .content input[type="checkbox"]):
* UserInterface/Views/DetailsSectionSimpleRow.js:
(WI.DetailsSectionSimpleRow.prototype.get label):
(WI.DetailsSectionSimpleRow.prototype.set label):
2017-10-13 Devin Rousso <webkit@devinrousso.com>
Web Inspector: make split console full width of view
https://bugs.webkit.org/show_bug.cgi?id=176635
Reviewed by Timothy Hatcher.
* UserInterface/Main.html:
* UserInterface/Views/Main.css:
(#main):
(#content):
* UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
(.sidebar > .panel.details.css-style > .content ~ :matches(.options-container, .class-list-container)):
(.sidebar > .panel.details.css-style > .content ~ .options-container):
2017-10-13 Devin Rousso <webkit@devinrousso.com>
Web Inspector: fix ESLint errors
https://bugs.webkit.org/show_bug.cgi?id=175065
Reviewed by Joseph Pecoraro.
Removed trailing whitespace, extra parenthesis, and some unnecessary escape characters.
Added missing semicolons, spacing around default values for parameters, and changed `==` to
`===` where applicable.
Specific changes to each file were removed for brevity.
* .eslintrc:
Alphabetize each list of global variables and add some missing utility functions.
* UserInterface/Base/EventListener.js:
* UserInterface/Base/EventListenerSet.js:
* UserInterface/Base/Main.js:
* UserInterface/Base/Setting.js:
* UserInterface/Base/TextUtilities.js:
* UserInterface/Base/URLUtilities.js:
* UserInterface/Base/Utilities.js:
* UserInterface/Base/YieldableTask.js:
* UserInterface/Controllers/AppControllerBase.js:
* UserInterface/Controllers/CanvasManager.js:
* UserInterface/Controllers/CodeMirrorCompletionController.js:
* UserInterface/Controllers/DOMDebuggerManager.js:
* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
* UserInterface/Controllers/RuntimeManager.js:
* UserInterface/Controllers/SourceMapManager.js:
* UserInterface/Debug/DebugContentView.js:
* UserInterface/Debug/UncaughtExceptionReporter.js:
* UserInterface/Models/CSSKeywordCompletions.js:
* UserInterface/Models/DOMNode.js:
* UserInterface/Models/DOMNodeStyles.js:
* UserInterface/Models/KeyboardShortcut.js:
* UserInterface/Models/ProfileNode.js:
* UserInterface/Models/Resource.js:
* UserInterface/Models/ResourceCollection.js:
* UserInterface/Models/Script.js:
* UserInterface/Models/ScriptSyntaxTree.js:
* UserInterface/Models/ScriptTimelineRecord.js:
* UserInterface/Protocol/Connection.js:
* UserInterface/Test/FrontendTestHarness.js:
* UserInterface/Test/TestHarness.js:
* UserInterface/Views/CSSStyleDeclarationSection.js:
* UserInterface/Views/ChartDetailsSectionRow.js:
* UserInterface/Views/CodeMirrorAdditions.js:
* UserInterface/Views/CodeMirrorFormatters.js:
* UserInterface/Views/CodeMirrorRegexMode.js:
* UserInterface/Views/ContentBrowserTabContentView.js:
* UserInterface/Views/DataGrid.js:
* UserInterface/Views/DataGridNode.js:
* UserInterface/Views/FindBanner.js:
* UserInterface/Views/GroupNavigationItem.js:
* UserInterface/Views/HierarchicalPathNavigationItem.js:
* UserInterface/Views/NetworkTableContentView.js:
* UserInterface/Views/NetworkTimelineView.js:
* UserInterface/Views/ObjectTreePropertyTreeElement.js:
* UserInterface/Views/ObjectTreeView.js:
* UserInterface/Views/RecordingContentView.js:
* UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
* UserInterface/Views/ResourceCookiesContentView.js:
* UserInterface/Views/ResourceDetailsSection.js:
* UserInterface/Views/ResourceHeadersContentView.js:
* UserInterface/Views/ResourceTimelineDataGridNode.js:
* UserInterface/Views/SettingEditor.js:
* UserInterface/Views/Sidebar.js:
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
* UserInterface/Views/Table.js:
* UserInterface/Views/TextEditor.js:
* UserInterface/Views/TimelineDataGridNode.js:
* UserInterface/Views/TreeElement.js:
* UserInterface/Views/TreeOutline.js:
* UserInterface/Views/WebSocketDataGridNode.js:
* UserInterface/Workers/Formatter/EsprimaFormatter.js:
* UserInterface/Workers/Formatter/FormatterWorker.js:
2017-10-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: hook up autocompletion to property names and values
https://bugs.webkit.org/show_bug.cgi?id=177313
<rdar://problem/34577057>
Reviewed by Joseph Pecoraro.
- Arrow Right accept the current completion item and places the text caret after it.
- Arrow Left hides the completion popover.
- Arrow Up selects the previous completion item.
- Arrow Down selects the next completion item.
- Enter and Tab accept the current completion item and navigate to the next focusable item.
- Escape hides the completion popover, if there is one.
* UserInterface/Views/CompletionSuggestionsView.js:
(WI.CompletionSuggestionsView):
(WI.CompletionSuggestionsView.prototype._mouseDown):
Add a preventBlur option so clicking on an completion item doesn't change the focus and
doesn't cause "blur" event on the target text field.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .completion-hint):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.detached):
Call detached on every SpreadsheetTextField to hide CompletionSuggestionsView once
SpreadsheetCSSStyleDeclarationEditor is removed from the DOM.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._addBlankProperty):
Remove index argument since it is no longer used.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.detached):
(WI.SpreadsheetStyleProperty.prototype._remove):
(WI.SpreadsheetStyleProperty.prototype._update):
(WI.SpreadsheetStyleProperty.prototype._nameCompletionDataProvider):
(WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
Add an extra parameter to SpreadsheetTextField to pass a completion data provider.
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField):
(WI.SpreadsheetTextField.prototype.get suggestionHint):
(WI.SpreadsheetTextField.prototype.set suggestionHint):
(WI.SpreadsheetTextField.prototype.startEditing):
(WI.SpreadsheetTextField.prototype.stopEditing):
(WI.SpreadsheetTextField.prototype.detached):
(WI.SpreadsheetTextField.prototype.completionSuggestionsSelectedCompletion):
(WI.SpreadsheetTextField.prototype.completionSuggestionsClickedCompletion):
(WI.SpreadsheetTextField.prototype._getPrefix):
(WI.SpreadsheetTextField.prototype._handleBlur):
(WI.SpreadsheetTextField.prototype._handleKeyDown):
(WI.SpreadsheetTextField.prototype._handleKeyDownForSuggestionView):
(WI.SpreadsheetTextField.prototype._handleInput):
(WI.SpreadsheetTextField.prototype._updateCompletions):
(WI.SpreadsheetTextField.prototype._getCaretRect):
(WI.SpreadsheetTextField.prototype._getCompletionPrefix):
(WI.SpreadsheetTextField.prototype._applyCompletionHint):
(WI.SpreadsheetTextField.prototype._hideCompletions):
Provide text completion based on the existing CompletionSuggestionsView when completionProvider is passed to SpreadsheetTextField.
2017-10-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Switch Clear navigation item back to the Trash icon (Console, Timelines, Network)
https://bugs.webkit.org/show_bug.cgi?id=178244
<rdar://problem/34966525>
Reviewed by Brian Burg.
* UserInterface/Images/NavigationItemClear.svg: Removed.
* UserInterface/Images/gtk/NavigationItemClear.svg: Removed.
* UserInterface/Views/LogContentView.js:
(WI.LogContentView):
* UserInterface/Views/NetworkGridContentView.js:
(WI.NetworkGridContentView):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
Many users found the new Clear icon confusing. Revert to the Trash icon.
2017-10-11 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Make 3D objects selectable in Layers visualization
https://bugs.webkit.org/show_bug.cgi?id=178136
Reviewed by Devin Rousso.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype.initialLayout):
(WI.Layers3DContentView.prototype._canvasMouseDown):
(WI.Layers3DContentView.prototype._updateLayerGroupSelection):
Implement selection of 3D layer objects.
(WI.Layers3DContentView.prototype._addLayerGroup): Renamed from _addLayer.
(WI.Layers3DContentView.prototype._updateLayerGroupPosition):
(WI.Layers3DContentView.prototype._createLayerMesh):
Refactor -- one group per layer (visible plane and composited outline), not groups by shape.
(WI.Layers3DContentView.prototype.layout):
(WI.Layers3DContentView.prototype._updateLayers):
(WI.Layers3DContentView.prototype._clearLayers): Deleted.
Don't destroy all 3D objects on every LayerTreeDidChange; make use of layerTreeMutations.
(Not only a performance improvement, but also necessary to properly preserve highlighting.)
(WI.Layers3DContentView.prototype.selectLayerById):
Allow selection to be updated from the outside.
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
(WI.LayerDetailsSidebarPanel.prototype._buildDataGrid):
(WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
Allow selection to be updated from the outside.
(WI.LayerDetailsSidebarPanel.prototype.inspect):
(WI.LayerDetailsSidebarPanel.prototype._updateLayers): Renamed from _updateDisplayWithLayers.
(WI.LayerDetailsSidebarPanel.prototype._updateDataGrid):
(WI.LayerDetailsSidebarPanel.prototype._updateBottomBar):
(WI.LayerDetailsSidebarPanel.prototype._contentForPopover):
(WI.LayerDetailsSidebarPanel.prototype._dataGridNodeForLayer): Deleted.
Cleanup.
* UserInterface/Views/LayersTabContentView.js:
(WI.LayersTabContentView):
(WI.LayersTabContentView.prototype._detailsSidebarSelectedLayerChanged):
(WI.LayersTabContentView.prototype._contentViewSelectedLayerChanged):
Orchestrate communication of selection state between visualization and sidebar.
2017-10-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Avoid "100.00ms" vs "100.0ms" jitter in TimelineRuler labels
https://bugs.webkit.org/show_bug.cgi?id=178143
Reviewed by Brian Burg.
* UserInterface/Base/Utilities.js:
Allow a small slop factor that wouldn't have changed the display value's
significant figures anyways. This addresses cases where 100.0000000000001
were being treated slightly differently from 100.0.
2017-10-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Show initially loaded resources even if network info not logged
https://bugs.webkit.org/show_bug.cgi?id=178098
<rdar://problem/34073529>
Reviewed by Devin Rousso.
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.hasResponse):
Resources loaded by Page.getFrameTree have a response but no status code data.
So include finished resources as having a resource.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype._populateWithInitialResourcesIfNeeded):
(WI.NetworkTableContentView.prototype._mainFrameDidChange):
Listen for the first main frame change to perform an initial population.
(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
This path is not currently taken when table is null, but change the code so
that if it is reached without the table it would behave gracefully.
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
On first open none of the resources have a statusCode. Show an emDash.
2017-10-10 Brian Burg <bburg@apple.com>
Web Inspector: Quick Open: source mapped files are not shown as search results
https://bugs.webkit.org/show_bug.cgi?id=178151
<rdar://problem/31561718>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/OpenResourceDialog.js:
(WI.OpenResourceDialog.prototype._addResource):
Also consider matching the query string against SourceMapResources
attached to a resource's source maps.
2017-10-10 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Set column initial widths to try allow waterfall column to expand more by default
https://bugs.webkit.org/show_bug.cgi?id=178142
<rdar://problem/34918233>
Reviewed by Brian Burg.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.initialLayout):
Provide initial widths for many columns where the max could fit
but we'd prefer a smaller than max initial width in wide cases.
* UserInterface/Views/Table.js:
(WI.Table.prototype._resizeColumnsAndFiller):
When auto sizing all columns use the preferred initial widths.
* UserInterface/Views/TableColumn.js:
(WI.TableColumn.prototype.get preferredInitialWidth):
Save the initial width.
2017-10-10 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Views should explicitly remove event listeners from managers/Frame
https://bugs.webkit.org/show_bug.cgi?id=175951
Reviewed by Brian Burg.
* UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:
(WI.ApplicationCacheDetailsSidebarPanel.prototype.closed):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WI.DOMNodeDetailsSidebarPanel.prototype.closed):
* UserInterface/Views/DebuggerDashboardView.js:
(WI.DebuggerDashboardView.prototype.closed):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype.closed):
* UserInterface/Views/NetworkGridContentView.js:
(WI.NetworkGridContentView.prototype.closed):
* UserInterface/Views/ProbeDetailsSidebarPanel.js:
(WI.ProbeDetailsSidebarPanel.prototype.closed):
* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole.prototype.closed):
* UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
(WI.ScopeChainDetailsSidebarPanel.prototype.closed):
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview.prototype.closed):
2017-10-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Include remote address in the Headers view
https://bugs.webkit.org/show_bug.cgi?id=178094
<rdar://problem/34895221>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
(WI.ResourceHeadersContentView.prototype._resourceMetricsDidChange):
2017-10-09 Joseph Pecoraro <pecoraro@apple.com>
Unreviewed, minified WebInspector opens blank.
<rdar://problem/34892307>
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype._refreshRequestHeadersSection):
Regression introduced in r223006. The minified build has a SyntaxError
causing WebInspector top open blank. Add the missing semicolon.
2017-10-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Filter resources based on URL / Text Content
https://bugs.webkit.org/show_bug.cgi?id=178071
<rdar://problem/34071562>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
New strings.
* UserInterface/Views/FilterBar.css:
(.filter-bar.active > input[type="search"]::-webkit-search-decoration):
(.filter-bar.indicating-progress > input[type="search"]::-webkit-search-decoration):
New icon for progress / active states.
* UserInterface/Views/FilterBar.js:
(WI.FilterBar.prototype.get inputField):
(WI.FilterBar.prototype.get placeholder):
(WI.FilterBar.prototype.set placeholder):
(WI.FilterBar.prototype.get incremental):
(WI.FilterBar.prototype.set incremental):
(WI.FilterBar.prototype.get indicatingProgress):
(WI.FilterBar.prototype.set indicatingProgress):
(WI.FilterBar.prototype.get indicatingActive):
(WI.FilterBar.prototype.set indicatingActive):
(WI.FilterBar.prototype._handleFilterInputEvent):
When incremental is set to false on the FilterBar still dispatch an
event when the textfield clears.
* UserInterface/Images/FilterFieldActiveGlyph.svg: Added.
* UserInterface/Images/gtk/FilterFieldActiveGlyph.svg: Added.
New blue icon for active state.
* UserInterface/Controllers/FrameResourceManager.js:
(WI.FrameResourceManager.prototype.resourceForIdentifier):
Accessor for arbitrary resource.
* UserInterface/Views/NetworkTableContentView.css:
(.content-view.network .navigation-bar .filter-bar):
(.content-view.network .warning-banner):
(body[dir=ltr] .content-view.network .warning-banner):
(body[dir=rtl] .content-view.network .warning-banner):
(.content-view.network .warning-banner > a):
Warning banner when the filter produces no results. This matches the
warning in the Debugger tab when breakpoints are disabled.
* UserInterface/Views/ScopeBar.js:
(WI.ScopeBar.prototype.resetToDefault):
Provide a way to easily reset a scope bar to the default item.
* UserInterface/Views/RadioButtonNavigationItem.css:
(.navigation-bar .item.radio.button.text-only:active):
* UserInterface/Views/ScopeBar.css:
(.scope-bar > li:active):
Cleanup some styles that should be using a variable.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get filterNavigationItems):
(WI.NetworkTableContentView.prototype.layout):
(WI.NetworkTableContentView.prototype._processPendingEntries):
(WI.NetworkTableContentView.prototype._checkTextFilterAgainstFinishedResource):
(WI.NetworkTableContentView.prototype._checkTextFilterAgainstFailedResource):
(WI.NetworkTableContentView.prototype._updateTextFilterActiveIndicator):
(WI.NetworkTableContentView.prototype._updateEmptyFilterResultsWarning):
(WI.NetworkTableContentView.prototype._showEmptyFilterResultsWarning):
(WI.NetworkTableContentView.prototype._hideEmptyFilterResultsWarning):
(WI.NetworkTableContentView.prototype._positionEmptyFilterMessage):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
(WI.NetworkTableContentView.prototype._networkTimelineRecordAdded):
(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
(WI.NetworkTableContentView.prototype._hasTypeFilter):
(WI.NetworkTableContentView.prototype._hasTextFilter):
(WI.NetworkTableContentView.prototype._hasActiveFilter):
(WI.NetworkTableContentView.prototype._passTypeFilter):
(WI.NetworkTableContentView.prototype._passTextFilter):
(WI.NetworkTableContentView.prototype._passFilter):
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._resetFilters):
(WI.NetworkTableContentView.prototype._textFilterDidChange):
(WI.NetworkTableContentView.prototype._tableNameColumnDidChangeWidth):
There are now two filters.
- FilterBar - Filters URL and Full Text Content
- ScopeBar - Filters Resource Type
The text content filter is asynchronous. We reuse the existing Search
functionality when filtering on text. We need to defer text content
filtering until the resource finishes loading.
2017-10-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab: Row wrapping (waterfall displaying behind next row's name)
https://bugs.webkit.org/show_bug.cgi?id=178015
<rdar://problem/34858720>
Reviewed by Brian Burg.
* UserInterface/Views/Table.css:
(.table > .header):
(.table > .data-container > .data-list > li):
Disallow wrapping.
2017-10-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Cookies Detail View
https://bugs.webkit.org/show_bug.cgi?id=177988
<rdar://problem/34071927>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Test.html:
New strings and resources.
* UserInterface/Models/Cookie.js: Added.
(WI.Cookie):
(WI.Cookie.parseCookieRequestHeader):
(WI.Cookie.parseSetCookieResponseHeader):
Encapsulation for Cookie attributes.
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.get requestCookies):
(WI.Resource.prototype.get responseCookies):
(WI.Resource.prototype.updateForRedirectResponse):
(WI.Resource.prototype.updateForResponse):
(WI.Resource.prototype.updateWithMetrics):
New computed accessors for requestCookies and responseCookies.
* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
Show the new Cookie View.
* UserInterface/Views/NetworkTableContentView.css:
(.content-view.network .network-table .icon):
(.network-table li:not(.filler) .cell.name):
(.network-table .cache-type):
(.network-table .error):
(body[dir=ltr] .network-table .cell.name > .status):
(body[dir=rtl] .network-table .cell.name > .status):
(.network-table .cell.name > .status .indeterminate-progress-spinner):
(.showing-detail .network-table .cell:not(.name)):
(.showing-detail .network-table .resizer:not(:first-of-type)):
(.network-table :not(.header) .cell:first-of-type):
Rework these styles to be specific to the .network-table.
* UserInterface/Views/Table.css:
(.table :not(.header) .cell:first-of-type): Deleted.
Move this to the network table styles, it shouldn't apply to all tables.
* UserInterface/Views/ResourceCookiesContentView.css:
(.resource-cookies > section > .details.has-table):
(.resource-cookies .table):
(.resource-cookies .table > .header):
Styles for Cookies view and table.
* UserInterface/Views/ResourceCookiesContentView.js: Added.
(WI.ResourceCookiesContentView):
(WI.ResourceCookiesContentView.prototype.tableNumberOfRows):
(WI.ResourceCookiesContentView.prototype.tableSortChanged):
(WI.ResourceCookiesContentView.prototype.tablePopulateCell):
(WI.ResourceCookiesContentView.prototype.initialLayout):
(WI.ResourceCookiesContentView.prototype._incompleteSectionWithMessage):
(WI.ResourceCookiesContentView.prototype._incompleteSectionWithLoadingIndicator):
(WI.ResourceCookiesContentView.prototype._dataSourceForTable):
(WI.ResourceCookiesContentView.prototype._generateSortComparator):
(WI.ResourceCookiesContentView.prototype._refreshRequestCookiesSection):
(WI.ResourceCookiesContentView.prototype._refreshResponseCookiesSection):
(WI.ResourceCookiesContentView.prototype._sizeForTable):
(WI.ResourceCookiesContentView.prototype._resourceRequestHeadersDidChange):
(WI.ResourceCookiesContentView.prototype._resourceResponseReceived):
Tables for Request and Response cookies. They are simliar with slightly different columns.
Handle simple display and sorting for the tables.
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype._refreshResponseHeadersSection):
Break out Set-Cookie headers as multiple headers. THey should never be combined.
* UserInterface/Views/Table.js:
(WI.Table.prototype.showColumn):
(WI.Table.prototype.hideColumn):
(WI.Table.prototype._handleHeaderContextMenu):
* UserInterface/Views/TableColumn.js:
(WI.TableColumn.prototype.get hideable):
(WI.TableColumn.prototype.set hidden):
(WI.TableColumn):
(WI.TableColumn.prototype.setHidden): Deleted.
Make it so some columns can not be hidden. For example the "value" column
in the Cookie tables.
2017-10-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Search Headers Detail View
https://bugs.webkit.org/show_bug.cgi?id=177981
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype.performSearch):
Rename "Dom" to "DOM" in utility function.
* UserInterface/Views/ResourceHeadersContentView.css:
(.resource-headers.showing-find-banner .search-highlight):
Search highlight styles.
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype.get supportsSearch):
(WI.ResourceHeadersContentView.prototype.get numberOfSearchResults):
(WI.ResourceHeadersContentView.prototype.get hasPerformedSearch):
(WI.ResourceHeadersContentView.prototype.set automaticallyRevealFirstSearchResult):
(WI.ResourceHeadersContentView.prototype.performSearch):
(WI.ResourceHeadersContentView.prototype.searchCleared):
(WI.ResourceHeadersContentView.prototype.revealPreviousSearchResult):
(WI.ResourceHeadersContentView.prototype.revealNextSearchResult):
(WI.ResourceHeadersContentView.prototype._perfomSearchOnKeyValuePairs):
(WI.ResourceHeadersContentView.prototype._revealSearchResult):
Implement ContentView search behavior.
2017-10-08 Devin Rousso <webkit@devinrousso.com>
Web Inspector: add autocompletion for min/max within a CSS calc
https://bugs.webkit.org/show_bug.cgi?id=178068
Reviewed by Joseph Pecoraro.
* UserInterface/Models/CSSKeywordCompletions.js:
(WI.CSSKeywordCompletions.forFunction):
2017-10-06 Matt Baker <mattbaker@apple.com>
Web Inspector: Add Canvas tab and CanvasOverviewContentView
https://bugs.webkit.org/show_bug.cgi?id=177604
<rdar://problem/34714650>
Reviewed by Devin Rousso.
This patch adds experimental feature support for the Canvas tab. Initially
the tab provides only an overview of the canvases in the page, and will
exist side-by-side with the existing experimental Canvas UI.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
* UserInterface/Base/Setting.js:
* UserInterface/Images/Canvas.svg: Added.
* UserInterface/Images/CanvasOverview.svg: Added.
* UserInterface/Main.html:
Add new art and canvas UI classes.
* UserInterface/Models/Canvas.js:
(WI.Canvas.requestNode):
(WI.Canvas.prototype.requestContent):
(WI.Canvas.prototype.requestCSSCanvasClientNodes):
(WI.Canvas.prototype.requestSize.calculateSize.getAttributeValue):
(WI.Canvas.prototype.requestSize.calculateSize):
(WI.Canvas.prototype.requestSize.getPropertyValue):
(WI.Canvas.prototype.requestSize):
Use promises to retrieve canvas data asynchronously.
* UserInterface/Models/CollectionTypes.js: Added.
(WI.CanvasCollection):
New location for concrete collection types. Having a class to type check
makes using a collection as a represented object a bit simpler.
* UserInterface/Views/CanvasContentView.css:
(.content-view.canvas:not(.tab)):
(.content-view.canvas:not(.tab) > .preview):
(.content-view.canvas:not(.tab) > .preview > img):
(.content-view.canvas:not(.tab) > :matches(header, footer)):
(.content-view.canvas): Deleted.
(.content-view.canvas > .preview): Deleted.
(.content-view.canvas > .preview > img): Deleted.
During the transition to the new Canvas tab, CanvasContentView needs to
support being shown as a full-size content view, and as an item in a
CollectionContentView. Hide header and footer elements by default.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.refresh):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype.shown):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype.detached):
(WI.CanvasContentView.prototype._showError):
(WI.CanvasContentView.prototype._refreshPixelSize):
(WI.CanvasContentView.prototype._showGridButtonClicked):
(WI.CanvasContentView.prototype._updateImageGrid):
(WI.CanvasContentView.prototype._updateMemoryCost):
(WI.CanvasContentView.prototype._updatePixelSize):
(WI.CanvasContentView.prototype._updateRecordNavigationItem):
(WI.CanvasContentView.prototype.hidden): Deleted.
(WI.CanvasContentView.prototype.closed): Deleted.
(WI.CanvasContentView.prototype._showPreview): Deleted.
Added new UI for display in the Canvas overview. These elements are always
created, but only appear when the canvas is viewed as a "card".
Canvas previews are no longer shown as soon as they are available from
the backend. Instead, once the canvas content is ready a layout is scheduled.
This guarantees that refreshing all canvases at once causes no flicker,
and introduces no perceptible delay.
Finally, the "Cancel recording" tooltip has been renamed "Stop recording",
to match the behavior of the command.
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel.prototype._refreshSourceSection.this._canvas.requestNode.): Deleted.
Canvas.prototype.requestNode now returns a promise.
* UserInterface/Views/CanvasOverviewContentView.css: Added.
(.content-view.canvas-overview):
(.content-view.canvas-overview .content-view.canvas):
(.content-view.canvas-overview .content-view.canvas.selected:not(.is-recording)):
(.content-view.canvas-overview .content-view.canvas > :matches(header, footer)):
(.content-view.canvas-overview .content-view.canvas > header):
(.content-view.canvas-overview .content-view.canvas.is-recording > header):
(.content-view.canvas-overview .content-view.canvas > header > .titles,):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .title):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .subtitle,):
(.content-view.canvas-overview .content-view.canvas > header .subtitle::before):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .title):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .navigation-bar > .item):
(.content-view.canvas-overview .content-view.canvas > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording) > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop.disabled):
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop):
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):hover):
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):active):
(.content-view.canvas-overview .content-view.canvas > .preview):
(.content-view.canvas-overview .content-view.canvas > .preview > img):
(.content-view.canvas-overview .content-view.canvas > .preview > .message-text-view):
(.content-view.canvas-overview .content-view.canvas > footer):
(.content-view.canvas-overview .content-view.canvas > footer .memory-cost):
Add header, navigation bar, and footer styles to CanvasContentView when
it is being shown as an item in a CollectionContentView.
* UserInterface/Views/CanvasOverviewContentView.js: Added.
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype.get navigationItems):
(WI.CanvasOverviewContentView.prototype.get selectionPathComponents):
(WI.CanvasOverviewContentView.prototype.hidden):
(WI.CanvasOverviewContentView.prototype.contentViewAdded):
(WI.CanvasOverviewContentView.prototype.contentViewRemoved):
(WI.CanvasOverviewContentView.prototype.attached):
(WI.CanvasOverviewContentView.prototype.detached):
(WI.CanvasOverviewContentView.prototype._refreshPreviews):
(WI.CanvasOverviewContentView.prototype._selectedPathComponentChanged):
(WI.CanvasOverviewContentView.prototype._showGridButtonClicked):
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange.createCanvasPathComponent):
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange):
(WI.CanvasOverviewContentView.prototype._updateNavigationItems):
(WI.CanvasOverviewContentView.prototype._updateShowImageGrid):
(WI.CanvasOverviewContentView.prototype._contentViewMouseEnter):
(WI.CanvasOverviewContentView.prototype._contentViewMouseLeave):
The overview extends CollectionContentView, adding buttons for global canvas actions
(refresh all and show/hide grid for all), and maintains a non-visible
outline of CanvasTreeElements to facilitate display of the hierarchical
path in the navigation bar.
* UserInterface/Views/CanvasTabContentView.css: Added.
(.content-view.tab.canvas .navigation-bar > .item > .hierarchical-path-component > .icon):
(.content-view.tab.canvas .navigation-bar > .item > .canvas-overview > .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas .icon):
* UserInterface/Views/CanvasTabContentView.js: Added.
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.tabInfo):
(WI.CanvasTabContentView.isTabAllowed):
(WI.CanvasTabContentView.prototype.get type):
(WI.CanvasTabContentView.prototype.get supportsSplitContentBrowser):
(WI.CanvasTabContentView.prototype.canShowRepresentedObject):
(WI.CanvasTabContentView.prototype.shown):
(WI.CanvasTabContentView.prototype.treeElementForRepresentedObject):
(WI.CanvasTabContentView.prototype.restoreFromCookie):
(WI.CanvasTabContentView.prototype.saveStateToCookie):
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype.detached):
(WI.CanvasTabContentView.prototype._canvasAdded):
(WI.CanvasTabContentView.prototype._canvasRemoved):
(WI.CanvasTabContentView.prototype._overviewPathComponentClicked):
(WI.CanvasTabContentView.prototype._mainResourceDidChange):
* UserInterface/Views/CollectionContentView.js:
(WI.CollectionContentView):
(WI.CollectionContentView.prototype.setSelectedItem):
(WI.CollectionContentView.prototype.addContentViewForItem):
(WI.CollectionContentView.prototype.removeContentViewForItem):
(WI.CollectionContentView.prototype.initialLayout):
(WI.CollectionContentView.prototype._showContentPlaceholder):
(WI.CollectionContentView.prototype._hideContentPlaceholder):
Placeholder content should be created lazily, and shown after a slight delay
to give represented objects a chance to load. Make sure to call the
shown or hidden method after adding or removing a content view.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Views/Variables.css:
(:root):
(body.window-inactive *):
* UserInterface/Views/View.js:
(WI.View.fromElement):
2017-10-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Headers Detail View
https://bugs.webkit.org/show_bug.cgi?id=177896
<rdar://problem/34071924>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New resources and strings.
* UserInterface/Base/URLUtilities.js:
(parseURL):
(WI.h2Authority):
(WI.h2Path):
Utility methods to get the :authority and :path pseudo-headers from a URL.
This required adding user info (user:pass@) support to URL parsing.
* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.get navigationItems):
(WI.NetworkTableContentView.prototype.get filterNavigationItems):
Move the NetworkTab's filter controls to the left. Since these are not
dynamic just vend them from the TableContentView and place them in the
navigation bar.
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.updateWithMetrics):
New event whenever metrics change. This is the first event that will allow
a client to react to a resource.protocol change.
* UserInterface/Views/NetworkResourceDetailView.css:
(.content-view.resource-details):
Base styles for the sub detail views.
* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.headersContentViewGoToRequestData):
(WI.NetworkResourceDetailView.prototype.initialLayout):
(WI.NetworkResourceDetailView.prototype._showPreferredContentView):
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
Create a Header view and provide a way to switch to a particular view. This wil
be useful to jump from the Header's Request Data directly to the Preview's
Request ContentView.
* UserInterface/Views/ResourceDetailsSection.css:
(.resource-details > section):
(.resource-details > section > .title):
(.resource-details > section > .details):
(.resource-details > section > .details > p):
(.resource-details > section.incomplete > .details):
* UserInterface/Views/ResourceDetailsSection.js:
(WI.ResourceDetailsSection):
(WI.ResourceDetailsSection.prototype.get element):
(WI.ResourceDetailsSection.prototype.get titleElement):
(WI.ResourceDetailsSection.prototype.get detailsElement):
(WI.ResourceDetailsSection.prototype.toggleIncomplete):
(WI.ResourceDetailsSection.prototype.toggleError):
Simple sections with a title and details div with a border.
It may be common to have an incomplete load / error so this
provides some APIs and styles for sections marked incomplete
or with errors.
* UserInterface/Views/ResourceHeadersContentView.css:
(.resource-headers > section > .details):
(.resource-headers > section.headers > .details):
(.resource-headers > section.error > .details):
(.resource-headers > section.error .key):
Style the left border different colors for different sections or cases.
(.resource-headers .details):
(.resource-headers .details .pair):
(.resource-headers .details .key):
(.resource-headers .value):
(.resource-headers .header > .key):
(.resource-headers .h1-status > .key):
(.resource-headers .h2-pseudo-header > .key):
Wrapped text for key/value pairs and different colors for different
sections or cases.
(.resource-headers .go-to-arrow):
Go-to arrow styles for a request data section.
* UserInterface/Views/ResourceHeadersContentView.js: Added.
(WI.ResourceHeadersContentView):
(WI.ResourceHeadersContentView.prototype.initialLayout):
(WI.ResourceHeadersContentView.prototype.layout):
(WI.ResourceHeadersContentView.prototype._incompleteSectionWithMessage):
(WI.ResourceHeadersContentView.prototype._incompleteSectionWithLoadingIndicator):
(WI.ResourceHeadersContentView.prototype._appendKeyValuePair):
(WI.ResourceHeadersContentView.prototype._responseSourceDisplayString):
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
(WI.ResourceHeadersContentView.prototype._refreshRequestHeadersSection):
(WI.ResourceHeadersContentView.prototype._refreshResponseHeadersSection):
(WI.ResourceHeadersContentView.prototype._refreshQueryStringSection):
(WI.ResourceHeadersContentView.prototype._refreshRequestDataSection):
(WI.ResourceHeadersContentView.prototype._resourceMetricsDidChange):
(WI.ResourceHeadersContentView.prototype._resourceRequestHeadersDidChange):
(WI.ResourceHeadersContentView.prototype._resourceResponseReceived):
(WI.ResourceHeadersContentView.prototype._goToRequestDataClicked):
Summary, Request, Response, Query String, and Request Data sections.
The sections refresh as data becomes available.
* UserInterface/Views/Table.css:
(.table):
These variables are already defined globally.
* UserInterface/Views/Variables.css:
(:root):
New variables for the colors we use. They closely match, and are
sometimes identical to ones used in Timelines / Memory views.
2017-10-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Make selection in the table more reliable (mousedown instead of click)
https://bugs.webkit.org/show_bug.cgi?id=177990
Reviewed by Brian Burg.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.tableCellClicked): Deleted.
* UserInterface/Views/Table.js:
(WI.Table.prototype._handleMouseDown):
(WI.Table.prototype._handleClick): Deleted.
Switch to mousedown.
2017-10-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Improve setting the default / initial sort of a Table
https://bugs.webkit.org/show_bug.cgi?id=177989
Reviewed by Brian Burg.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.initialLayout):
Set the default / initial sort.
* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype.set sortOrder):
(WI.Table.prototype.set sortColumnIdentifier):
During setup we should always update header views.
2017-10-05 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: Add support for keyboard navigation (Tab, Shift-Tab, Enter, Esc)
https://bugs.webkit.org/show_bug.cgi?id=177711
Reviewed by Joseph Pecoraro.
Enter, Tab, Shift-Tab should commit changes.
Escape should discard changes.
Tab and Enter should navigate forward (focus on the next field).
Shift-Tab should navigate backward (focus on the previous field).
Esc should not change the focus.
When navigating forward from:
- Selector: Focus on the first property name. If it doesn’t exist, create a blank property.
- Property name:
- If property name is blank, discard the property and focus on the next editable field (property name or selector of the next rule).
- If property is not blank, focus on the value.
- Property value:
- If the last value in the rule, create a blank property and focus on its name.
- If not the last value in the rule, focus on the next editable field (property name or selector of the next rule).
When navigating backward from:
- Selector: create a blank property on the previous editable rule and focus on its name.
- Property name:
- Focus on the rule's selector.
- Property value:
- Focus on the property name.
* UserInterface/Base/Utilities.js:
(Event.prototype.stop):
* UserInterface/Main.html:
Add new files. Keep one class per file.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.remove):
(WI.CSSProperty.prototype.set name):
(WI.CSSProperty.prototype.set rawValue):
(WI.CSSProperty.prototype.get editable):
(WI.CSSProperty.prototype._updateStyleText):
(WI.CSSProperty.prototype._updateOwnerStyleText):
Update indices and ranges of properties following the edited one to prevent data corruption.
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration.prototype.get selectorEditable):
(WI.CSSStyleDeclaration.prototype.set text):
(WI.CSSStyleDeclaration.prototype.newBlankProperty):
(WI.CSSStyleDeclaration.prototype.shiftPropertiesAfter):
(WI.CSSStyleDeclaration.prototype._rangeAfterPropertyAtIndex):
Implement adding new blank properties.
* UserInterface/Models/TextRange.js:
(WI.TextRange.prototype.cloneAndModify):
Add an assert to catch negative number errors.
(WI.TextRange.prototype.collapseToEnd):
Add a utility function akin Selection.prototype.collapseToEnd.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WI.CSSStyleDeclarationTextEditor.prototype._handleShiftTabKey):
(WI.CSSStyleDeclarationTextEditor.prototype._handleTabKey):
(WI.CSSStyleDeclarationTextEditor.prototype._formattedContent):
Move PrefixWhitespace from a view to a model (WI.CSSStyleDeclaration.PrefixWhitespace),
since it's already used in the model.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor :matches(.name, .value).editing):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingFirstProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingLastProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get _propertiesToRender):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._addBlankProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._isFocused):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
Give SpreadsheetCSSStyleDeclarationEditor a delegate so that it can move focus to a CSS selector, or previous and next CSS rules.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get propertiesEditor):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get editable):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.startEditingRuleSelector):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorStartEditingRuleSelector):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationEditorStartEditingAdjacentRule):
Give SpreadsheetCSSStyleDeclarationSection a delegate so that it can move focus to previous and next CSS rules.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingNextRule):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingPreviousRule):
(WI.SpreadsheetRulesStyleDetailsPanel):
Implement focusing on the next and previous CSS rules.
* UserInterface/Views/SpreadsheetSelectorField.js: Added.
(WI.SpreadsheetSelectorField):
(WI.SpreadsheetSelectorField.prototype.get editing):
(WI.SpreadsheetSelectorField.prototype.startEditing):
(WI.SpreadsheetSelectorField.prototype.stopEditing):
(WI.SpreadsheetSelectorField.prototype._selectText):
(WI.SpreadsheetSelectorField.prototype._handleClick):
(WI.SpreadsheetSelectorField.prototype._handleFocus):
(WI.SpreadsheetSelectorField.prototype._handleBlur):
(WI.SpreadsheetSelectorField.prototype._handleKeyDown):
Move SpreadsheetSelectorField into its own file.
* UserInterface/Views/SpreadsheetStyleProperty.js: Added.
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.get element):
(WI.SpreadsheetStyleProperty.prototype.get nameTextField):
(WI.SpreadsheetStyleProperty.prototype.get valueTextField):
(WI.SpreadsheetStyleProperty.prototype._remove):
(WI.SpreadsheetStyleProperty.prototype._update):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidChange):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
(WI.SpreadsheetStyleProperty.prototype._handleNameChange):
(WI.SpreadsheetStyleProperty.prototype._handleValueChange):
Move SpreadsheetStyleProperty into its own file.
* UserInterface/Views/SpreadsheetTextField.js: Added.
(WI.SpreadsheetTextField):
(WI.SpreadsheetTextField.prototype.get element):
(WI.SpreadsheetTextField.prototype.get editing):
(WI.SpreadsheetTextField.prototype.get value):
(WI.SpreadsheetTextField.prototype.set value):
(WI.SpreadsheetTextField.prototype.startEditing):
(WI.SpreadsheetTextField.prototype.stopEditing):
(WI.SpreadsheetTextField.prototype._selectText):
(WI.SpreadsheetTextField.prototype._discardChange):
(WI.SpreadsheetTextField.prototype._handleFocus):
(WI.SpreadsheetTextField.prototype._handleBlur):
(WI.SpreadsheetTextField.prototype._handleKeyDown):
(WI.SpreadsheetTextField.prototype._handleInput):
Introduce SpreadsheetTextField that is used for editing CSS property names and values.
2017-10-05 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION(r222868): Web Inspector: Timeline ScopeBar Navigation Bar items too large
https://bugs.webkit.org/show_bug.cgi?id=177979
Reviewed by Matt Baker.
* UserInterface/Views/ButtonNavigationItem.css:
(.navigation-bar .item.button.text-only):
Make the height of text-only items the size of the text, not 100%.
2017-10-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: When scrolled Network Table reduces the number of rows it may appear as blank
https://bugs.webkit.org/show_bug.cgi?id=177914
<rdar://problem/34827613>
Reviewed by Matt Baker.
* UserInterface/Views/Table.js:
(WI.Table.prototype._updateVisibleRows):
(WI.Table.prototype._updateFillerRowWithNewHeight):
Reduce the scrollTop when the table was scrolled and was then reloaded with a
smaller number of rows. This can happen in two ways. Either the number of rows
was reduced so much that we enter non-scrollable mode with a non-zero filler
row. This can always reset the scrollTop to 0. Or when a large number of rows
is reduced to a smaller number than our current scrollTop but still more than
fit on one screen. In that case we can reduce the scrollTop to whatever would
scroll the table to its max position.
2017-10-04 Matt Baker <mattbaker@apple.com>
Web Inspector: Improve CanvasManager recording events
https://bugs.webkit.org/show_bug.cgi?id=177762
Reviewed by Devin Rousso.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.startRecording):
(WI.CanvasManager.prototype.stopRecording):
(WI.CanvasManager.prototype.recordingFinished):
Replace the RecordingFinished event with a pair of events. RecordingStarted
is sent when CanvasAgent.startRecording succeeds. RecordingStopped is
sent when a recordingFinished event is received from the backend, or
when a call to CanvasAgent.stopRecording fails.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._toggleRecording):
(WI.CanvasContentView.prototype._recordingStarted):
(WI.CanvasContentView.prototype._recordingFinished): Deleted.
Update recording status when CanvasManager fires recording events,
instead of immediately after clicking the record button.
2017-10-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Detail Views for resources in Network Tab
https://bugs.webkit.org/show_bug.cgi?id=177553
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New strings and resources.
* UserInterface/Base/Main.js:
(WI._focusedContentBrowser):
Detect nested content browsers instead of only top level tab content browsers.
* UserInterface/Base/Setting.js:
Add a new global setting for which Network Detail view is preferred.
* UserInterface/Views/ContentBrowser.css:
(.content-browser > .navigation-bar .item):
(.content-browser > .navigation-bar > .item): Deleted.
Generalize a navigation item style so it works on items nested inside a group.
* UserInterface/Views/ContentBrowser.js:
(WI.ContentBrowser.prototype._updateContentViewSelectionPathNavigationItem):
(WI.ContentBrowser.prototype._updateContentViewNavigationItems):
(WI.ContentBrowser.prototype._removeAllNavigationItems):
Give ContentBrowser a way to group all ContentView specific navigation items
inside a GroupNavigationItem. This lets the client decide what to do with
those navigation items, instead of default behavior in the navigation bar.
* UserInterface/Views/ContentViewContainer.js:
(WI.ContentViewContainer.prototype.showContentView):
Avoid a flash when showContentView is called with the current content view.
* UserInterface/Views/FlexibleSpaceNavigationItem.css:
(:matches(.navigation-bar, .toolbar) .item.flexible-space.align-start > .item):
(:matches(.navigation-bar, .toolbar) .item.flexible-space.align-end > .item):
When containing a navigation item decide where you want the items to align to.
* UserInterface/Views/FlexibleSpaceNavigationItem.js:
(WI.FlexibleSpaceNavigationItem):
(WI.FlexibleSpaceNavigationItem.prototype.updateLayout):
Provide an option to embed a NavigationItem within a FlexibleSpace. Its behavior right
now is rather simple. If the embedded Item fits in the current available space it is
shown. If it doesn't fit, it is hidden and we have just a flexible space. This is used
in the network detail view's navigation bar to keep the main navigation items centered
while allowing for buttons to show up on the side without affecting the centering.
* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar):
(WI.NavigationBar.prototype._mouseDown):
(WI.NavigationBar.prototype._mouseUp):
Simplify event registration. This would also help avoid cases where we
might have registered multiple mousedown handlers.
* UserInterface/Views/GroupNavigationItem.js:
(WI.GroupNavigationItem):
(WI.GroupNavigationItem.prototype.get navigationItems):
(WI.GroupNavigationItem.prototype.set navigationItems):
(WI.GroupNavigationItem.prototype.get width):
(WI.GroupNavigationItem.prototype.get minimumWidth):
(WI.GroupNavigationItem.prototype._updateItems):
* UserInterface/Views/HierarchicalPathNavigationItem.js:
(WI.HierarchicalPathNavigationItem):
(WI.HierarchicalPathNavigationItem.prototype.set components):
(WI.HierarchicalPathNavigationItem.prototype.updateLayout):
(WI.HierarchicalPathNavigationItem.prototype._updateComponentsIfNeeded):
Defer DOM modifications until layout for NavigationItems container classes
that change items/components dynamically. This reduces UI flashing in the
bar when items/components change by coalescing all DOM updates at the same
time; when the NavigationBar does its next layout.
* UserInterface/Views/NetworkResourceDetailView.css:
(.network-resource-detail):
(.network-resource-detail .navigation-bar):
(.network-resource-detail .item.close > .glyph):
(.network-resource-detail .item.close > .glyph:hover):
(.network-resource-detail .item.close > .glyph:active):
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only):
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only.selected):
(.network-resource-detail > .content-browser):
Styles for the detail view's navigation bar.
* UserInterface/Views/NetworkResourceDetailView.js: Added.
(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.get resource):
(WI.NetworkResourceDetailView.prototype.shown):
(WI.NetworkResourceDetailView.prototype.hidden):
(WI.NetworkResourceDetailView.prototype.dispose):
(WI.NetworkResourceDetailView.prototype.initialLayout):
(WI.NetworkResourceDetailView.prototype._showPreferredContentView):
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
(WI.NetworkResourceDetailView.prototype._navigationItemSelected):
(WI.NetworkResourceDetailView.prototype._handleCloseButton):
ContentBrowser with customized navigation bar. This container has a fixed
list of ContentViews all relating to the Resource. The detail view has
a single delegate method for its close button. Since it maintains a
ContentBrowser it needs to expose shown/hidden/dispose logic to ensure
proper ContentView lifecycle events.
* UserInterface/Views/NetworkTableContentView.css:
(.showing-detail .table .cell:not(.name)):
(.showing-detail .table .resizer:not(:first-of-type)):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.shown):
(WI.NetworkTableContentView.prototype.hidden):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.networkResourceDetailViewClose):
(WI.NetworkTableContentView.prototype.tableSortChanged):
(WI.NetworkTableContentView.prototype.tableCellClicked):
(WI.NetworkTableContentView.prototype.tableSelectedRowChanged):
(WI.NetworkTableContentView.prototype.layout):
(WI.NetworkTableContentView.prototype._hideResourceDetailView):
(WI.NetworkTableContentView.prototype._showResourceDetailView):
(WI.NetworkTableContentView.prototype._positionDetailView):
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._typeFilterScopeBarSelectionChanged):
(WI.NetworkTableContentView.prototype._restoreSelectedRow):
(WI.NetworkTableContentView.prototype._tableNameColumnDidChangeWidth):
Behavior for selecting a row and showing / hiding the detail view.
The detail view is positioned beside the Network Table's "name" column
and resizes when that column resizes.
* UserInterface/Views/Resizer.css:
(.resizer):
* UserInterface/Views/Table.css:
(.table > .resizers):
* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype.get scrollContainer):
(WI.Table.prototype._positionResizerElements):
To let clients customize the table a bit, put resizers into their own
container and expose the scroll container.
* UserInterface/Views/Variables.css:
(:root):
Add a new button hover color, slightly lighter than the existing button active color.
2017-10-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Fix Beacon and Ping folderization issues
https://bugs.webkit.org/show_bug.cgi?id=177885
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.shortDisplayNameForResourceType):
Use common capitalized UIString "Ping". It gets lowercased later.
* UserInterface/Models/ResourceCollection.js:
Add missing verifier.
2017-10-04 Matt Baker <mattbaker@apple.com>
Web Inspector: Remove unused `representedObject` parameter from GeneralTreeElementPathComponent constructor
https://bugs.webkit.org/show_bug.cgi?id=177561
Reviewed by Joseph Pecoraro.
* UserInterface/Views/GeneralTreeElementPathComponent.js:
(WI.GeneralTreeElementPathComponent):
(WI.GeneralTreeElementPathComponent.prototype.get generalTreeElement):
(WI.GeneralTreeElementPathComponent.prototype.get previousSibling):
(WI.GeneralTreeElementPathComponent.prototype.get nextSibling):
2017-10-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: After enabling the new Network Tab in experimental settings, the network tab disappears
https://bugs.webkit.org/show_bug.cgi?id=177774
<rdar://problem/34771647>
Reviewed by Devin Rousso.
* UserInterface/Views/SettingsTabContentView.js:
When enabling the new network tab, ensure it gets added to the list of open tabs.
Place it where the old network tab was so the UI is as consistent as possible.
2017-10-03 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Layers tab sidebar's DOM highlight should be by row hover, not row selection
https://bugs.webkit.org/show_bug.cgi?id=177690
Reviewed by Devin Rousso.
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel):
(WI.LayerDetailsSidebarPanel.prototype._buildDataGrid):
(WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
(WI.LayerDetailsSidebarPanel.prototype._dataGridMouseMove):
(WI.LayerDetailsSidebarPanel.prototype._dataGridMouseLeave):
(WI.LayerDetailsSidebarPanel.prototype._hideDOMNodeHighlight):
(WI.LayerDetailsSidebarPanel.prototype._dataGridFocused): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._dataGridBlurred): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._highlightSelectedNode): Deleted.
2017-10-03 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: support editing of rule selectors
https://bugs.webkit.org/show_bug.cgi?id=177012
Reviewed by Matt Baker.
Clicking or focusing (by tabbing from another field) on a CSS selector should select the text and make the selector
field editable.
Keyboard behavior while editing:
- Enter should commit changes.
- Escape should discard changes.
- Tab should commit changes and navigate to the first property name.
- Shift-Tab should commit changes and navigate to the last rule's property value, if there's one.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetStyleProperty.prototype._update):
Add tabIndex so the keyboard navigation (Tab & Shift-Tab) to and from selectors works as expected.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration .selector:focus,):
(.spreadsheet-css-declaration .selector.spreadsheet-selector-field):
(.spreadsheet-css-declaration .selector.spreadsheet-selector-field.editing):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get selectorEditable):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.layout):
Split layout into _renderOrigin and _renderSelector, so selector field can be updated separately
from everything else.
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorFocused):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidDiscard):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._discardSelectorChange):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderOrigin):
(WI.SpreadsheetSelectorField):
(WI.SpreadsheetSelectorField.prototype.get editing):
(WI.SpreadsheetSelectorField.prototype.startEditing):
(WI.SpreadsheetSelectorField.prototype.stopEditing):
(WI.SpreadsheetSelectorField.prototype._handleClick):
(WI.SpreadsheetSelectorField.prototype._handleFocus):
(WI.SpreadsheetSelectorField.prototype._handleBlur):
(WI.SpreadsheetSelectorField.prototype._handleKeyDown):
2017-10-03 Matt Baker <mattbaker@apple.com>
Web Inspector: Add View layout tests, make views more testable
https://bugs.webkit.org/show_bug.cgi?id=161274
<rdar://problem/28038615>
Reviewed by Devin Rousso.
This patch adds support for View testing. Since view layouts are scheduled
using requestAnimationFrame, FrontendTestHarness now provides a timer-based
polyfill, to allow nonintrusive testing of the frontend View hierarchy.
* UserInterface/Test.html:
Make WI.View available to tests.
* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness.prototype.redirectRequestAnimationFrame):
* UserInterface/Views/View.js:
(WI.View.rootView):
(WI.View.prototype.replaceSubview):
(WI.View.prototype._didMoveToWindow):
(WI.View._cancelScheduledLayoutForView):
Fixed issues caught while writing tests for the expected View behavior.
2017-10-02 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Escape more characters in posix string conversion
https://bugs.webkit.org/show_bug.cgi?id=177761
<rdar://problem/34506832>
Reviewed by Brian Burg.
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.generateCURLCommand.escapeStringPosix):
Escape '!' to '\041' in posix strings ($'...') since '!' may have special behavior at times.
2017-10-02 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Selecting child layers with keyboard causes Compositing Reason popover to become misaligned
https://bugs.webkit.org/show_bug.cgi?id=150551
Reviewed by Matt Baker.
`content` setter should only be used when NOT repositioning the popover.
`presentNewContentWithFrame` exists to update content and position at once.
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel.prototype._showPopoverForSelectedNode):
(WI.LayerDetailsSidebarPanel.prototype._presentPopover):
Fix new sidebar.
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WI.LayerTreeDetailsSidebarPanel.prototype._updatePopoverForSelectedNode):
Fix legacy sidebar.
2017-10-02 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Ensure popovers are not malformed on window resize.
https://bugs.webkit.org/show_bug.cgi?id=177771
Reviewed by Joseph Pecoraro.
* UserInterface/Views/Popover.js:
Ensure stale `arrow-*` CSS classes are removed on update, even if our content didn't change.
2017-10-02 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include Beacon and Ping requests in Network tab
https://bugs.webkit.org/show_bug.cgi?id=177641
<rdar://problem/33086839>
Reviewed by Chris Dumez.
* Localizations/en.lproj/localizedStrings.js:
New strings for Beacon/Ping.
* UserInterface/Images/Beacon.svg: Added.
* UserInterface/Views/ResourceIcons.css:
(.resource-icon.resource-type-ping .icon,):
(body:not(.mac-platform, .windows-platform) .resource-icon.resource-type-ping .icon,):
(body:not(.mac-platform, .windows-platform) .large .resource-icon.resource-type-ping .icon,):
New icon for Beacon/Ping. They share an icon since they are similiar in concept:
a request that is sent and the page doesn't expect a response.
* UserInterface/Controllers/FrameResourceManager.js:
(WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
When a sub-resource and a main-resource have the same URL we were not
distinguishing them. Use the resource type to distinguish them better.
* UserInterface/Models/SourceCode.js:
(WI.SourceCode.prototype._processContent):
Safer handling if the body was base64 encoded but an empty string.
* UserInterface/Models/Resource.js:
(WI.Resource.displayNameForType):
* UserInterface/Models/ResourceCollection.js:
(WI.ResourceCollection.verifierForType):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.shortDisplayNameForResourceType):
* UserInterface/Views/ResourceClusterContentView.js:
(WI.ResourceClusterContentView.prototype.get responseContentView):
New resource types.
* UserInterface/Views/ResourceContentView.js:
(WI.ResourceContentView.prototype.showMessage):
* UserInterface/Views/TextResourceContentView.js:
(WI.TextResourceContentView.prototype._contentDidPopulate):
Nicer display for empty content, which may be common for these requests.
2017-09-29 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: support undo/redo of manual edits
https://bugs.webkit.org/show_bug.cgi?id=177314
Reviewed by Joseph Pecoraro.
Make sure Command-Z and Command-Shift-Z undo changes in the styles sidebar
when not focused on a contentEditable field.
* UserInterface/Views/EditingSupport.js:
(WI.isEventTargetAnEditableField):
Make sure WI._undoKeyboardShortcut doesn't call WI.undo() when editing inside of a contentEditable element.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
Call style setter to setup event listeners during instantiation.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set style):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
Update style declaration section when it isn't focused.
This is the same logic as in the old styles sidebar (CSSStyleDeclarationTextEditor style setter).
2017-09-29 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Open Resource Dialog icons are blurry (24x24 instead of 32x32)
https://bugs.webkit.org/show_bug.cgi?id=177631
<rdar://problem/34729636>
Reviewed by Matt Baker.
* UserInterface/Views/OpenResourceDialog.css:
(.open-resource-dialog > .tree-outline.large .item):
(.open-resource-dialog > .tree-outline.large .item .icon):
(.open-resource-dialog .tree-outline.large .item .titles):
Make the rows large enough to fit the full 32x32 icon instead of a blurry 24x24.
2017-09-29 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Uncaught exception with populate find keyboard shortcut
https://bugs.webkit.org/show_bug.cgi?id=177672
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
The focusedContentView can be null so bail if that is the case.
2017-09-28 Devin Rousso <webkit@devinrousso.com>
WebInspector: Uncaught Exception: TypeError: this._delegate.completionControllerCSSFunctionValuesNeeded is not a function.
https://bugs.webkit.org/show_bug.cgi?id=177619
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/CodeMirrorCompletionController.js:
(WI.CodeMirrorCompletionController.prototype._generateCSSCompletions):
Remove accidental `typeof` keyword.
2017-09-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove Error icon in error message for resources it looks poor
https://bugs.webkit.org/show_bug.cgi?id=177613
Reviewed by Matt Baker.
* UserInterface/Views/Main.css:
(.message-text-view.error::before): Deleted.
2017-09-28 Tim Horton <timothy_horton@apple.com>
Remove constant() in favor of env()
https://bugs.webkit.org/show_bug.cgi?id=177581
<rdar://problem/34701321>
Reviewed by Dean Jackson.
* UserInterface/Models/CSSCompletions.js:
* UserInterface/Models/CSSKeywordCompletions.js:
(WI.CSSKeywordCompletions.forProperty):
(WI.CSSKeywordCompletions.forFunction):
2017-09-27 Joseph Pecoraro <pecoraro@apple.com>
Uncaught Exception: Attempted to assign to readonly property (at ContentView.js:​206:​34)​
https://bugs.webkit.org/show_bug.cgi?id=177587
Reviewed by Matt Baker.
We allow a representedObject to be a string. In strict mode attempting to set
a property on a string results in a TypeError. So we should be careful not to
do this in the rare cases where our representedObject is the a string.
* UserInterface/Views/ContentView.js:
(WI.ContentView.contentViewForRepresentedObject):
(WI.ContentView.closedContentViewForRepresentedObject):
Avoid setting a property on strings. ContentViews backed by a String aren't typically
shared anyways, so the property case would not be useful. If a client really wants
to share they could use `new String(...)` as the representedObject.
2017-09-27 Matt Baker <mattbaker@apple.com>
Web Inspector: Missing checks in DebuggerSidebarPanel for DOM debugging support
https://bugs.webkit.org/show_bug.cgi?id=177574
Reviewed by Joseph Pecoraro.
Check before using class members that are conditionally constructed based
on DOM debugging support.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype.closed):
(WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
2017-09-27 Matt Baker <mattbaker@apple.com>
Web Inspector: Create ResourceCollectionContentView and make CollectionContentView easier to extend
https://bugs.webkit.org/show_bug.cgi?id=177419
Reviewed by Devin Rousso.
CollectionContentView should be generic, work with any represented object
Collection, and not perform any type checking. It should just map items
to ContentViews using the provided ContentView constructor.
The behavior when clicking a ContentView in the collection has been extended.
If selection is enabled, clicking a ContentView will cause a "selected" class
to be applied to its element, and a SupplementalRepresentedObjectsDidChange
event is dispatched.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New file, move CollectionContentView above subclasses.
* UserInterface/Models/ResourceCollection.js:
(WI.ResourceCollection.prototype.get resourceType):
Make resource type publicly available.
* UserInterface/Views/CollectionContentView.js:
Move type checking of the collection out of the base class and assert
that ContentViews are created when invoking `contentViewConstructor`.
(WI.CollectionContentView):
(WI.CollectionContentView.titleForCollection):
(WI.CollectionContentView.prototype.get supplementalRepresentedObjects):
(WI.CollectionContentView.prototype.get selectionEnabled):
(WI.CollectionContentView.prototype.set selectionEnabled):
(WI.CollectionContentView.prototype.addContentViewForItem):
(WI.CollectionContentView.prototype.removeContentViewForItem):
(WI.CollectionContentView.prototype.contentViewAdded):
(WI.CollectionContentView.prototype.contentViewRemoved):
(WI.CollectionContentView.prototype.initialLayout):
(WI.CollectionContentView.prototype.attached):
(WI.CollectionContentView.prototype.detached):
(WI.CollectionContentView.prototype._handleItemAdded):
(WI.CollectionContentView.prototype._handleItemRemoved):
(WI.CollectionContentView.prototype._selectItem):
(WI.CollectionContentView.prototype._addContentViewForItem): Deleted.
(WI.CollectionContentView.prototype._removeContentViewForItem): Deleted.
* UserInterface/Views/ContentView.js:
(WI.ContentView.createFromRepresentedObject):
Create a ResourceCollectionContentView. In the future, additional
Collection types can be mapped to their associated CollectionContentView.
* UserInterface/Views/ResourceCollectionContentView.js: Added.
New class for resource-specific logic previously in CollectionContentView.
(WI.ResourceCollectionContentView):
(WI.ResourceCollectionContentView.prototype.contentViewAdded):
(WI.ResourceCollectionContentView.prototype._handleContentError):
Remove ContentView without removing the resource from its collection.
2017-09-27 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Fix Layers tab sidebar popover.
https://bugs.webkit.org/show_bug.cgi?id=177477
Reviewed by Matt Baker.
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel.prototype.willDismissPopover): Added.
(WI.LayerDetailsSidebarPanel.prototype._buildDataGrid):
(WI.LayerDetailsSidebarPanel.prototype._sortDataGrid):
(WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
(WI.LayerDetailsSidebarPanel.prototype._dataGridFocused):
(WI.LayerDetailsSidebarPanel.prototype._dataGridBlurred):
(WI.LayerDetailsSidebarPanel.prototype._showPopoverForSelectedNode): Refactored.
(WI.LayerDetailsSidebarPanel.prototype._presentPopover):
(WI.LayerDetailsSidebarPanel.prototype._dataGridClicked): Deleted -- not actually desired behavior.
(WI.LayerDetailsSidebarPanel.prototype._updatePopoverForSelectedNode): Deleted -- code simplification.
(WI.LayerDetailsSidebarPanel.prototype._hidePopover): Deleted -- no longer needed.
2017-09-27 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add Canvas2D.svg and Canvas3D.svg
https://bugs.webkit.org/show_bug.cgi?id=175364
Reviewed by Carlos Garcia Campos.
Add more free icons.
* UserInterface/Images/gtk/Canvas2D.svg: Copied from Source/WebInspectorUI/UserInterface/Images/gtk/Canvas.svg.
* UserInterface/Images/gtk/Canvas3D.svg: Added.
2017-09-26 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: Style unused, overridden, and invalid properties differently
https://bugs.webkit.org/show_bug.cgi?id=177461
Reviewed by Matt Baker.
Style properties the same way as in the current styles sidebar with two minor changes:
- Commented out properties are never strikethrough.
- Non-inherited properties of inherited rules are no longer strikethrough (but still semi-transparent).
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property:matches(.invalid, .other-vendor, .overridden):not(.disabled)):
Use the same styles as in the old sidebar, with exception of `-webkit-text-stroke-width: 0.000000000000001px`
hack, which was replaced by -webkit-text-decoration-color.
(.spreadsheet-style-declaration-editor .property.invalid:not(.disabled)):
(.spreadsheet-style-declaration-editor .property.not-inherited):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype._update):
2017-09-26 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Improve Table scrolling performance
https://bugs.webkit.org/show_bug.cgi?id=177468
Reviewed by Brian Burg.
This reduces work during scrolling updates in two ways.
1. Avoid recalculating the width/height of the Table on scroll.
- We only need to recalculate sizes if the view changes size.
2. Avoid resetting sizes on all cells if the sizes did not change.
- Enumerating and setting style.width values was showing up in profiles.
* UserInterface/Views/Table.js:
(WI.Table):
New member variables for a cached width/height of the scrollable region.
_cachedWidth is the same as _cachedScrollableHeight but they could be
different so I just kept them separate for now. Also switch to
getBoundingClientRect which gets us a better value then
offsetWidth/offsetHeight.
(WI.Table.prototype.resize):
Clear cached size and relayout.
(WI.Table.prototype.layout):
If we did not resize, layout without recalculating sizes.
(WI.Table.prototype.resizerDragging):
(WI.Table.prototype._getOrCreateRow):
When column widths change increment the width generation. This will let
us quickly check if a row's cells are appropriately sized or not.
(WI.Table.prototype._resizeColumnsAndFiller):
Cache width values after recalculating. Provide a fast path if values
have not changed.
(WI.Table.prototype._updateVisibleRows):
(WI.Table.prototype._updateFillerRowWithNewHeight):
Factor out updating the filler row into a function.
(WI.Table.prototype._applyColumnWidths):
Always update the width generation of a row after setting its cell widths.
(WI.Table.prototype._applyColumnWidthsToColumnsIfNeeded):
Fast path only updates row cell widths if they need to change.
2017-09-25 Devin Rousso <webkit@devinrousso.com>
Web Inspector: move Console.addInspectedNode to DOM.setInspectedNode
https://bugs.webkit.org/show_bug.cgi?id=176827
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager):
(WI.DOMTreeManager.prototype.setInspectedNode):
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype._selectedNodeDidChange):
2017-09-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add loading indicator next to resources in the Network Tab
https://bugs.webkit.org/show_bug.cgi?id=177469
Reviewed by Matt Baker.
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.isLoading):
Provide a useful accessor to check if the Resource is considered loading or not.
* UserInterface/Views/NetworkGridContentView.js:
(WI.NetworkGridContentView.prototype._networkTimelineRecordAdded):
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WI.ResourceTimelineDataGridNode.prototype._updateStatus):
* UserInterface/Views/ResourceTreeElement.js:
(WI.ResourceTreeElement.prototype._updateStatus):
Switch existing code to use the new isLoading() function and make the similiar
code more consistent.
* UserInterface/Views/NetworkTableContentView.css:
(body[dir=ltr] .content-view.network .table .cell.name > .status):
(body[dir=rtl] .content-view.network .table .cell.name > .status):
(.content-view.network .table .cell.name > .status .indeterminate-progress-spinner):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateNameCell):
Add a loading indicator to the Name column in the Network tab.
It is sized the same as the loading indicator in the Resource tab.
2017-09-25 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Elements tab's Layers sidebar should disappear when Layers tab is present.
https://bugs.webkit.org/show_bug.cgi?id=177476
Reviewed by Devin Rousso.
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
2017-09-25 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Add autocompletion suggestions for CSS attr based on the selected element's attributes
https://bugs.webkit.org/show_bug.cgi?id=177346
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/CodeMirrorCompletionController.js:
(WI.CodeMirrorCompletionController.prototype._generateCSSCompletions):
Provide a way for delegates to add completion items for CSS functions based on the name of
the function.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WI.CSSStyleDeclarationTextEditor.prototype.completionControllerCSSFunctionValuesNeeded):
If the function name is "attr", also return a list of the names of all the selected node's
attributes.
2017-09-25 Joseph Pecoraro <pecoraro@apple.com>
Unreviewed follow-up to r222470.
* UserInterface/Main.html:
Remove reference to css file that doesn't exist yet.
2017-09-22 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include a table in New Network Tab
https://bugs.webkit.org/show_bug.cgi?id=177206
Reviewed by Matt Baker and Brian Burg.
This includes an initial implementation of the NetworkTableContentView,
and a generic Table / TableColumn implementation ported from DataGrid.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New strings and files.
* UserInterface/Views/NetworkGridContentView.css:
(.content-view:matches(.network, .network-grid) > .data-grid .cache-type):
(.cache-type): Deleted.
* UserInterface/Views/ResourceDetailsSidebarPanel.css:
(.sidebar > .panel.resource-details .cache-type):
Make the .cache-type selector more specific for the legacy cases.
* UserInterface/Views/NetworkTabContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/NetworkGridContentView.css.
(.content-view.network > .content-browser):
* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView.prototype.shown):
(WI.NetworkTabContentView.prototype.hidden):
(WI.NetworkTabContentView.prototype.closed):
NetworkTabContentView has a ContentBrowser so it should be passing
ContentBrowser lifecycle events (shown, hidden, closed) through to
the sub-content browser.
* UserInterface/Views/TableColumn.js: Added.
(WI.TableColumn.prototype.get identifier):
(WI.TableColumn.prototype.get name):
(WI.TableColumn.prototype.get width):
(WI.TableColumn.prototype.get minWidth):
(WI.TableColumn.prototype.get maxWidth):
(WI.TableColumn.prototype.get hidden):
(WI.TableColumn.prototype.get defaultHidden):
(WI.TableColumn.prototype.get sortable):
(WI.TableColumn.prototype.get align):
(WI.TableColumn.prototype.get locked):
(WI.TableColumn.prototype.get flexible):
(WI.TableColumn.prototype.setWidth):
(WI.TableColumn.prototype.setHidden):
Model object for a column. Values are getter only. Columns may express
size constraints (min width / max width) that are respected as much as
possible. When a column is resized it dispatches an event.
* UserInterface/Views/Table.js: Added.
(WI.Table):
(WI.Table.prototype.get element):
(WI.Table.prototype.get identifier):
(WI.Table.prototype.get dataSource):
(WI.Table.prototype.get delegate):
(WI.Table.prototype.get rowHeight):
(WI.Table.prototype.get selectedRow):
(WI.Table.prototype.get sortOrder):
(WI.Table.prototype.set sortOrder):
(WI.Table.prototype.get sortColumnIdentifier):
(WI.Table.prototype.set sortColumnIdentifier):
(WI.Table.prototype.resize):
(WI.Table.prototype.reloadData):
(WI.Table.prototype.reloadDataAddedToEndOnly):
(WI.Table.prototype.reloadRow):
(WI.Table.prototype.reloadCell):
(WI.Table.prototype.selectRow):
(WI.Table.prototype.clearSelectedRow):
(WI.Table.prototype.columnWithIdentifier):
(WI.Table.prototype.addColumn):
(WI.Table.prototype.showColumn):
(WI.Table.prototype.hideColumn):
(WI.Table.prototype.restoreScrollPosition):
(WI.Table.prototype.initialLayout):
(WI.Table.prototype.layout):
(WI.Table.prototype.resizerDragStarted):
(WI.Table.prototype.resizerDragging.growableSize):
(WI.Table.prototype.resizerDragging.shrinkableSize):
(WI.Table.prototype.resizerDragging.canGrow):
(WI.Table.prototype.resizerDragging.canShrink):
(WI.Table.prototype.resizerDragging.columnToResize):
(WI.Table.prototype.resizerDragging):
(WI.Table.prototype.resizerDragEnded):
(WI.Table.prototype._needsLayout):
(WI.Table.prototype._createHeaderCell):
(WI.Table.prototype._createFillerCell):
(WI.Table.prototype._createCell):
(WI.Table.prototype._getOrCreateRow):
(WI.Table.prototype._populatedCellForColumnAndRow):
(WI.Table.prototype._populateRow):
(WI.Table.prototype._resizeColumnsAndFiller.distributeRemainingPixels):
(WI.Table.prototype._resizeColumnsAndFiller.bestFit):
(WI.Table.prototype._resizeColumnsAndFiller):
(WI.Table.prototype._updateVisibleRows):
(WI.Table.prototype._applyColumnWidths):
(WI.Table.prototype._positionResizerElements):
(WI.Table.prototype._isRowVisible):
(WI.Table.prototype._indexToInsertColumn):
(WI.Table.prototype._handleScroll):
(WI.Table.prototype._handleKeyDown):
(WI.Table.prototype._handleClick):
(WI.Table.prototype._handleContextMenu):
(WI.Table.prototype._handleHeaderCellClicked):
(WI.Table.prototype._handleHeaderContextMenu):
Table is mostly a re-implementation of DataGrid. Much of its functionality
was a direct copy that was then modified and simplified for a smaller
and simpler feature set.
Table behaves more like Cocoa's NSTableView. A datasource supplies the
number of rows, which Table uses to resize appropriately. A delegate is
then called to populate cells in a row when they become visible. Table
does minimal caching, and in the event of data source changes
(resorting, adding rows, modifying rows, etc) the visible rows are
simply recreated from scratch. Clients should therefore make generating
a cell's contents as simple and performant as possible.
Unlike DataGrid, rows are just an <li> with a bunch of cells. Since the
number of rows are limited to (roughly) those that are visible, most
operations, like resizing, creates / modifies each of the visible cells.
Finally, Table's resizing operations behave more like flexible content
than DataGrid's neighbor only approach. This makes resizing the table
generally easier to do, but may need refinement to decide which columns
we would prefer to distribute columns during resizing.
* UserInterface/Views/Table.css: Added.
(.table):
(.table > .header):
(.table > .header > .sortable:active):
(.table > .header > :matches(.sort-ascending, .sort-descending)):
(.table > .header > :matches(.sort-ascending, .sort-descending)::after):
(body[dir=ltr] .table > .header > :matches(.sort-ascending, .sort-descending)):
(body[dir=rtl] .table > .header > :matches(.sort-ascending, .sort-descending)):
(body[dir=ltr] .table > .header > :matches(.sort-ascending, .sort-descending)::after):
(body[dir=rtl] .table > .header > :matches(.sort-ascending, .sort-descending)::after):
(.table > .header > .sort-ascending::after):
(.table > .header > .sort-descending::after):
(.table > .data-container):
(.table > .data-container.not-scrollable):
(.table > .data-container > .data-list):
(.table > .data-container > .data-list.odd-first-zebra-stripe):
(.table > .data-container > .data-list > li):
(.table > .data-container > .data-list > li.selected):
(.table:focus > .data-container > .data-list li.selected):
(.table .cell):
(body[dir=ltr] .table .cell:not(:last-child)):
(body[dir=rtl] .table .cell:not(:last-child)):
(body[dir=ltr] .table .cell:first-child):
(body[dir=rtl] .table .cell:first-child):
(.table :not(.header) .cell:first-of-type):
(.table .cell.align-right):
(.table .cell.align-left):
(.table .cell.align-center):
Styles mostly taken from DataGrid with a few minor tweaks.
* UserInterface/Views/NetworkTableContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/NetworkGridContentView.css.
(.content-view.network .table .icon):
(body[dir=ltr] .content-view.network .table .icon):
(body[dir=rtl] .content-view.network .table .icon):
(.content-view.network .table li:not(.filler) .cell.name):
(.content-view.network .table .cache-type):
(.content-view.network .table .error):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.shortDisplayNameForResourceType):
(WI.NetworkTableContentView.prototype.get navigationItems):
(WI.NetworkTableContentView.prototype.shown):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.tableNumberOfRows):
(WI.NetworkTableContentView.prototype.tableSortChanged):
(WI.NetworkTableContentView.prototype.tableCellClicked):
(WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
(WI.NetworkTableContentView.prototype.tableSelectedRowChanged):
(WI.NetworkTableContentView.prototype.tablePopulateCell):
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._populateTransferSizeCell):
(WI.NetworkTableContentView.prototype._generateSortComparator):
(WI.NetworkTableContentView.prototype.initialLayout):
(WI.NetworkTableContentView.prototype.layout):
(WI.NetworkTableContentView.prototype._processPendingEntries):
(WI.NetworkTableContentView.prototype._rowIndexForResource):
(WI.NetworkTableContentView.prototype._updateEntryForResource):
(WI.NetworkTableContentView.prototype._mainResourceDidChange):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
(WI.NetworkTableContentView.prototype._resourceTransferSizeDidChange):
(WI.NetworkTableContentView.prototype._networkTimelineRecordAdded):
(WI.NetworkTableContentView.prototype._isDefaultSort):
(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
(WI.NetworkTableContentView.prototype._displayType):
(WI.NetworkTableContentView.prototype._entryForResource):
(WI.NetworkTableContentView.prototype._passFilter):
(WI.NetworkTableContentView.prototype._updateSortAndFilteredEntries):
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._generateTypeFilter):
(WI.NetworkTableContentView.prototype._areFilterListsIdentical):
(WI.NetworkTableContentView.prototype._typeFilterScopeBarSelectionChanged):
(WI.NetworkTableContentView.prototype._tableNameColumnDidChangeWidth):
The NetworkTableContentView has a Table and it is the table's data source
and delegate. It contains a complete list of entries, and a filtered list
of entries, which is the backing list of rows for the table. As entries
are created, updated, or filters modified, this generally modifies
entries, sorts, filters, and reloads the table. As much as possible it
batches operations in the usual layout loop.
2017-09-24 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Reduce work during resizing
https://bugs.webkit.org/show_bug.cgi?id=177402
Reviewed by Matt Baker.
* UserInterface/Views/ConsolePrompt.js:
(WI.ConsolePrompt.prototype.layout):
In the most common case there is no text so avoid doing work in CodeMirror.
2017-09-22 Matt Baker <mattbaker@apple.com>
Web Inspector: Remove SidebarPanel show/hide and added/removed
https://bugs.webkit.org/show_bug.cgi?id=177387
Reviewed by Devin Rousso.
* UserInterface/Views/DebuggerTabContentView.js:
(WI.DebuggerTabContentView.prototype.showDetailsSidebarPanels):
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype.focusSearchField):
* UserInterface/Views/Sidebar.js:
(WI.Sidebar.prototype.insertSidebarPanel):
(WI.Sidebar.prototype.removeSidebarPanel):
* UserInterface/Views/SidebarPanel.js:
(WI.SidebarPanel.prototype.show): Deleted.
(WI.SidebarPanel.prototype.hide): Deleted.
(WI.SidebarPanel.prototype.added): Deleted.
(WI.SidebarPanel.prototype.removed): Deleted.
2017-09-22 Matt Baker <mattbaker@apple.com>
Web Inspector: View should automatically layout when it becomes attached to the DOM
https://bugs.webkit.org/show_bug.cgi?id=177189
Reviewed by Devin Rousso.
This guarantees that a layout is always scheduled as soon as a view is
attached to the DOM. Now that nearly all views are created lazily, it
is safe to make this change even without having a visibility concept in
the View class that would prevent layouts for background views.
* UserInterface/Views/View.js:
(WI.View):
Remove `this._needsLayoutWhenAttachedToRoot` flag, which is now implicit.
This was set if a layout was requested before the view had been attached
to the DOM.
(WI.View.prototype.get element):
(WI.View.prototype.get layoutPending):
(WI.View.prototype.get parentView):
(WI.View.prototype.get subviews):
(WI.View.prototype.get isAttached):
(WI.View.prototype.insertSubviewBefore):
(WI.View.prototype.removeSubview):
(WI.View.prototype.removeAllSubviews):
(WI.View.prototype.attached):
(WI.View.prototype.detached):
Hooks for subclasses to define behavior added or removed from the DOM.
(WI.View.prototype._didMoveToParent):
(WI.View.prototype._didMoveToWindow):
(WI.View._scheduleLayoutForView):
(WI.View.prototype.didMoveToWindow): Deleted.
(WI.View.prototype.didMoveToParent): Deleted.
These were only used by View, and have been made private.
2017-09-22 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: support toggling properties
https://bugs.webkit.org/show_bug.cgi?id=176643
Reviewed by Joseph Pecoraro.
Add a primitive UI to make CSS property names and values editable. Autocomplete, syntax highlighting,
and proper keyboard navigation will be added later.
Display !important when it's specified. Before this patch !important wasn't shown in the redesigned
styles sidebar.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.update):
(WI.CSSProperty.prototype.get name):
(WI.CSSProperty.prototype.set name):
(WI.CSSProperty.prototype.get value):
(WI.CSSProperty.prototype.get rawValue):
(WI.CSSProperty.prototype.set rawValue):
CSSProperty.prototype.value returns the same value as before. !important remains stripped.
CSSProperty.prototype.rawValue returns a raw value from the payload. It may include !important.
(WI.CSSProperty.prototype._updateStyle):
(WI.CSSProperty.prototype._updateOwnerStyleText):
(WI.CSSProperty):
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype._parseStylePropertyPayload):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor :matches(.name, .value):focus):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetStyleProperty.prototype._update):
(WI.SpreadsheetStyleProperty.prototype._handleNameChange):
(WI.SpreadsheetStyleProperty.prototype._handleValueChange):
(WI.SpreadsheetStyleProperty):
2017-09-22 Matt Baker <mattbaker@apple.com>
Web Inspector: NavigationBar should coalesce consecutive dividers when items are hidden
https://bugs.webkit.org/show_bug.cgi?id=177379
Reviewed by Joseph Pecoraro.
* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype.layout):
2017-09-22 Tim Horton <timothy_horton@apple.com>
Add env() as an alias of constant()
https://bugs.webkit.org/show_bug.cgi?id=177371
Reviewed by Simon Fraser.
* UserInterface/Models/CSSKeywordCompletions.js:
(WI.CSSKeywordCompletions.forProperty):
(WI.CSSKeywordCompletions.forFunction):
Add autocomplete support for env().
2017-09-21 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add autocompletion suggestions for CSS functions (constant(), linear-gradient(), etc)
https://bugs.webkit.org/show_bug.cgi?id=177264
Reviewed by Matt Baker.
* UserInterface/Controllers/CodeMirrorCompletionController.js:
(WI.CodeMirrorCompletionController.prototype._generateCSSCompletions):
Detect when we are inside of functions and provide completion suggestions
for the relevant function.
* UserInterface/Models/CSSCompletions.js:
Syntax highlight "constant()" like we do for "var()".
* UserInterface/Models/CSSKeywordCompletions.js:
(WI.CSSKeywordCompletions.forProperty):
Always suggest "constant()" everywhere, like we do for "var()".
(WI.CSSKeywordCompletions.forFunction):
Provide suggestions for some CSS functions.
2017-09-21 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove support for CSS Regions
https://bugs.webkit.org/show_bug.cgi?id=177287
Reviewed by Matt Baker.
* UserInterface/Protocol/CSSObserver.js:
(WI.CSSObserver.prototype.namedFlowCreated):
(WI.CSSObserver.prototype.namedFlowRemoved):
(WI.CSSObserver.prototype.regionLayoutUpdated):
(WI.CSSObserver.prototype.regionOversetChanged):
(WI.CSSObserver.prototype.registeredNamedFlowContentElement):
(WI.CSSObserver.prototype.unregisteredNamedFlowContentElement):
Leave observer functions in for older backends that will send
these messages, but we just ignore them.
* UserInterface/Base/Main.js:
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager):
(WI.DOMTreeManager.prototype._unbind):
(WI.DOMTreeManager._flowPayloadHashKey): Deleted.
(WI.DOMTreeManager.prototype._createContentFlowFromPayload): Deleted.
(WI.DOMTreeManager.prototype._updateContentFlowFromPayload): Deleted.
(WI.DOMTreeManager.prototype.getNamedFlowCollection.onNamedFlowCollectionAvailable): Deleted.
(WI.DOMTreeManager.prototype.getNamedFlowCollection): Deleted.
(WI.DOMTreeManager.prototype.namedFlowCreated): Deleted.
(WI.DOMTreeManager.prototype.namedFlowRemoved): Deleted.
(WI.DOMTreeManager.prototype._sendNamedFlowUpdateEvents): Deleted.
(WI.DOMTreeManager.prototype.regionOversetChanged): Deleted.
(WI.DOMTreeManager.prototype.registeredNamedFlowContentElement): Deleted.
(WI.DOMTreeManager.prototype._removeContentNodeFromFlowIfNeeded): Deleted.
(WI.DOMTreeManager.prototype.unregisteredNamedFlowContentElement): Deleted.
(WI.DOMTreeManager.prototype._coerceRemoteArrayOfDOMNodes.nodeRequested): Deleted.
(WI.DOMTreeManager.prototype._coerceRemoteArrayOfDOMNodes): Deleted.
(WI.DOMTreeManager.prototype.getNodeContentFlowInfo.regionNodesAvailable): Deleted.
(WI.DOMTreeManager.prototype.getNodeContentFlowInfo.remoteObjectPropertiesAvailable): Deleted.
(WI.DOMTreeManager.prototype.getNodeContentFlowInfo.inspectedPage_node_getFlowInfo.getComputedProperty): Deleted.
(WI.DOMTreeManager.prototype.getNodeContentFlowInfo.inspectedPage_node_getFlowInfo.getContentFlowName): Deleted.
(WI.DOMTreeManager.prototype.getNodeContentFlowInfo): Deleted.
* UserInterface/Images/ContentFlow.svg: Removed.
* UserInterface/Images/gtk/ContentFlow.svg: Removed.
* UserInterface/Main.html:
* UserInterface/Models/Collection.js:
* UserInterface/Models/ContentFlow.js: Removed.
* UserInterface/Models/DOMTree.js:
(WI.DOMTree):
(WI.DOMTree.prototype.get frame):
(WI.DOMTree.prototype._framePageExecutionContextChanged):
(WI.DOMTree.prototype.get contentFlowCollection): Deleted.
(WI.DOMTree.prototype.requestContentFlowList): Deleted.
(WI.DOMTree.prototype._isContentFlowInCurrentDocument): Deleted.
(WI.DOMTree.prototype._contentFlowListWasUpdated): Deleted.
(WI.DOMTree.prototype._contentFlowWasAdded): Deleted.
(WI.DOMTree.prototype._contentFlowWasRemoved): Deleted.
* UserInterface/Test.html:
* UserInterface/Views/CollectionContentView.js:
(WI.CollectionContentView):
* UserInterface/Views/ComputedStyleDetailsPanel.css:
(.details-section > .content > .group > .row.simple.content-flow-link > .value > span > .icon): Deleted.
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WI.ComputedStyleDetailsPanel.prototype.refresh):
(WI.ComputedStyleDetailsPanel.prototype.initialLayout):
(WI.ComputedStyleDetailsPanel.prototype._handleVariablesSectionCollapsedStateChanged):
(WI.ComputedStyleDetailsPanel):
(WI.ComputedStyleDetailsPanel.prototype.get regionFlow): Deleted.
(WI.ComputedStyleDetailsPanel.prototype.set regionFlow): Deleted.
(WI.ComputedStyleDetailsPanel.prototype.get contentFlow): Deleted.
(WI.ComputedStyleDetailsPanel.prototype.set contentFlow): Deleted.
(WI.ComputedStyleDetailsPanel.prototype.get containerRegions): Deleted.
(WI.ComputedStyleDetailsPanel.prototype.set containerRegions): Deleted.
(WI.ComputedStyleDetailsPanel.prototype.sizeDidChange): Deleted.
(WI.ComputedStyleDetailsPanel.prototype._updateFlowNamesSectionVisibility): Deleted.
(WI.ComputedStyleDetailsPanel.prototype._resetFlowDetails): Deleted.
(WI.ComputedStyleDetailsPanel.prototype._refreshFlowDetails.contentFlowInfoReady): Deleted.
(WI.ComputedStyleDetailsPanel.prototype._refreshFlowDetails): Deleted.
(WI.ComputedStyleDetailsPanel.prototype._goToRegionFlowArrowWasClicked): Deleted.
(WI.ComputedStyleDetailsPanel.prototype._goToContentFlowArrowWasClicked): Deleted.
* UserInterface/Views/ContentFlowDOMTreeContentView.js: Removed.
* UserInterface/Views/ContentFlowIcon.css: Removed.
* UserInterface/Views/ContentFlowTreeElement.js: Removed.
* UserInterface/Views/ContentView.js:
(WI.ContentView.createFromRepresentedObject):
(WI.ContentView.isViewable):
* UserInterface/Views/FrameTreeElement.js:
(WI.FrameTreeElement.prototype.onpopulate):
(WI.FrameTreeElement.prototype.onexpand):
(WI.FrameTreeElement.prototype._childContentFlowWasAdded): Deleted.
(WI.FrameTreeElement.prototype._childContentFlowWasRemoved): Deleted.
(WI.FrameTreeElement.prototype._rootDOMNodeInvalidated): Deleted.
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/ResourcesTabContentView.js:
(WI.ResourcesTabContentView):
(WI.ResourcesTabContentView.prototype.canShowRepresentedObject):
2017-09-21 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Add details sidebar to Layers tab.
https://bugs.webkit.org/show_bug.cgi?id=177115
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Views/LayerDetailsSidebarPanel.css: Added.
* UserInterface/Views/LayerDetailsSidebarPanel.js: Added.
New files and strings for sidebar.
* UserInterface/Base/Utilities.js:
Add global identifier for "×" character.
* UserInterface/Models/Layer.js: Added.
Add a model class for layers so that we can instanceof-check them.
* UserInterface/Controllers/LayerTreeManager.js:
(WI.LayerTreeManager.prototype.layersForNode):
Utilize model class WI.Layer.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype.get supplementalRepresentedObjects):
(WI.Layers3DContentView.prototype.layout):
(WI.Layers3DContentView.prototype._addLayer):
Pass layer data to sidebar and utilize model class WI.Layer.
* UserInterface/Views/LayersTabContentView.js:
(WI.LayersTabContentView):
Attach details sidebar.
2017-09-21 Brian Burg <bburg@apple.com>
Web Inspector: keyboard shortcut for "Reload page from origin" doesn't match Safari, and doesn't work
https://bugs.webkit.org/show_bug.cgi?id=177010
<rdar://problem/33134548>
Reviewed by Joseph Pecoraro.
I seem to have broken reload from origin via Web Inspector in a previous
patch, because the parameter is 'ignoreCache' instead of 'shouldIgnoreCache'.
* Localizations/en.lproj/localizedStrings.js:
Modernize tooltip text.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
Disambiguate two locals with the same name. Modernize the tooltip.
Make the shortcut Cmd-Opt-R to match Safari. Fix wrong parameter usage.
* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness.prototype.reloadPage):
Fix wrong parameter.
2017-09-19 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Adopt named groups in complex regexes
https://bugs.webkit.org/show_bug.cgi?id=177117
Reviewed by Matt Baker.
* UserInterface/Base/URLUtilities.js:
(parseSecurityOrigin):
(parseDataURL):
(parseURL):
* UserInterface/Models/Color.js:
(WI.Color.fromString):
2017-09-19 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION(r214494): Web Inspector: Ignore cache button does not work in Network tab
https://bugs.webkit.org/show_bug.cgi?id=177114
<rdar://problem/34505265>
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WI.loaded):
We need to register the settings change handler regardless of what the
initial value of the setting is.
2017-09-18 Matt Baker <mattbaker@apple.com>
Web Inspector: RemoteObject.resolveNode should return a Promise
https://bugs.webkit.org/show_bug.cgi?id=177042
Reviewed by Joseph Pecoraro.
Update RemoteObject.resolveNode to return a promise instead of taking a
callback. If the promise is fulfilled, `remoteObject` will be non-null.
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager.prototype.inspectNodeObject.nodeAvailable):
(WI.DOMTreeManager.prototype.inspectNodeObject):
(WI.DOMTreeManager.prototype.getNodeContentFlowInfo.domNodeResolved): Deleted.
* UserInterface/Models/DOMNode.js:
(WI.DOMNode.prototype.toggleClass.WI.RemoteObject.resolveNode.then):
(WI.DOMNode.prototype.toggleClass):
(WI.DOMNode.prototype.scrollIntoView.WI.RemoteObject.resolveNode.then):
(WI.DOMNode.prototype.scrollIntoView):
(WI.DOMNode.prototype.toggleClass.resolvedNode.inspectedPage_node_toggleClass): Deleted.
(WI.DOMNode.prototype.toggleClass.resolvedNode): Deleted.
(WI.DOMNode.prototype.scrollIntoView.resolvedNode.inspectedPage_node_scrollIntoView): Deleted.
(WI.DOMNode.prototype.scrollIntoView.resolvedNode): Deleted.
* UserInterface/Protocol/RemoteObject.js:
(WI.RemoteObject.resolveNode):
* UserInterface/Views/BoxModelDetailsSectionRow.js:
(WI.BoxModelDetailsSectionRow.prototype._applyUserInput.WI.RemoteObject.resolveNode.then):
(WI.BoxModelDetailsSectionRow.prototype._applyUserInput):
(WI.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode.toggleInlineStyleProperty): Deleted.
(WI.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode.didToggle): Deleted.
(WI.BoxModelDetailsSectionRow.prototype._applyUserInput.resolvedNode): Deleted.
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNode):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved.inspectedPage_node_collectPrototypes): Deleted.
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved): Deleted.
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodePrototypesReady): Deleted.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._createTooltipForNode.WI.RemoteObject.resolveNode.then):
(WI.DOMTreeElement.prototype._createTooltipForNode):
(WI.DOMTreeElement.prototype._createTooltipForNode.resolvedNode.dimensions): Deleted.
(WI.DOMTreeElement.prototype._createTooltipForNode.resolvedNode): Deleted.
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype._hideElement.injectStyleAndToggleClass):
(WI.DOMTreeOutline.prototype._hideElement):
(WI.DOMTreeOutline):
(WI.DOMTreeOutline.prototype._hideElement.resolvedNode.injectStyleAndToggleClass): Deleted.
(WI.DOMTreeOutline.prototype._hideElement.resolvedNode): Deleted.
2017-09-18 Brian Burg <bburg@apple.com>
Web Inspector: introduce an AppController class and shared instance of it
https://bugs.webkit.org/show_bug.cgi?id=177024
Reviewed by Matt Baker.
WebInspectorUI currently has an app controller singleton that's distributed
among many properties on the WI object, which also serves as a namespace for
classes, enums, and other frontend objects. The singleton should be a proper
class so that we can think more easily about what state is global.
In the process of moving pieces of Main.js into AppController, I intend to move
most UI related code into a view controller class for the top level view.
AppController really shouldn't be doing anything to the view hierarchy or DOM.
It is yet to be determined how responsibility for global DOM events, such as
those for keyboard shortcuts, will be handled.
This larger refactoring project will let us more easily do things like connect
to multiple debuggables in the same Inspector instance, and switch between views
of different debuggable targets. Even if this never comes to pass, the code will
be a lot easier to reason about and maintain in the future.
For the first patch, introduce {AppController, TestAppController} <: AppControllerBase.
Shared code goes in the base class. In the Main.html and Test.html files, first
construct the AppController and then call .initialize() to avoid cyclic dependencies
on the global singleton WI.sharedApp.
* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WI.loaded):
* UserInterface/Base/Main.js:
(WI.loaded):
Move some shared code out of here into AppControllerBase.constructor.
Eventually WI.loaded should not exist, and its code will move elsewhere.
(WI.contentLoaded):
Adopt global reference.
* UserInterface/Controllers/AppControllerBase.js: Copied from Source/WebInspectorUI/UserInterface/Protocol/MainTarget.js.
(WI.AppControllerBase):
(WI.AppControllerBase.prototype.get hasExtraDomains):
(WI.AppControllerBase.prototype.get debuggableType):
(WI.AppControllerBase.prototype.initialize):
* UserInterface/Controllers/AppController.js: New.
(WI.AppController):
(WI.AppController.prototype.get hasExtraDomains):
(WI.AppController.prototype.get debuggableType):
(WI.AppController.prototype.activateExtraDomains):
* UserInterface/Test/TestAppController.js: New.
(WI.TestAppController):
(WI.TestAppController.prototype.get hasExtraDomains):
(WI.TestAppController.prototype.get debuggableType):
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.defaultTimelineTypes):
(WI.TimelineManager.availableTimelineTypes):
(WI.TimelineManager.prototype.scriptProfilerProgrammaticCaptureStarted):
(WI.TimelineManager.prototype.scriptProfilerProgrammaticCaptureStopped):
(WI.TimelineManager.prototype.scriptProfilerTrackingCompleted):
* UserInterface/Models/TimelineRecording.js:
(WI.TimelineRecording.sourceCodeTimelinesSupported):
* UserInterface/Protocol/InspectorObserver.js:
(WI.InspectorObserver.prototype.inspect):
(WI.InspectorObserver.prototype.activateExtraDomains):
(WI.InspectorObserver):
* UserInterface/Protocol/MainTarget.js:
(WI.MainTarget):
(WI.MainTarget.prototype.get displayName):
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel):
(WI.ResourceSidebarPanel.prototype.initialLayout):
(WI.ResourceSidebarPanel.prototype._addScript):
(WI.ResourceSidebarPanel.prototype._extraDomainsActivated):
* UserInterface/Views/Toolbar.js:
Use WI.sharedApp.{debuggableType, hasExtraDomains}.
2017-09-18 Matt Baker <mattbaker@apple.com>
Web Inspector: console.assert messages shouldn't end in an exclamation point
https://bugs.webkit.org/show_bug.cgi?id=177054
Reviewed by Joseph Pecoraro.
* UserInterface/Base/EventListener.js:
* UserInterface/Base/EventListenerSet.js:
(WI.EventListenerSet.prototype.register):
Drive-by: make assertions the same in both.
* UserInterface/Views/LayoutTimelineView.js:
(WI.LayoutTimelineView.prototype._processPendingRecords):
* UserInterface/Views/Resizer.js:
(WI.Resizer.prototype._currentPosition):
2017-09-18 Devin Rousso <webkit@devinrousso.com>
Web Inspector: REGRESSION(r221901): Single frame recordings don't reset the recording navigation item
https://bugs.webkit.org/show_bug.cgi?id=176893
Reviewed by Matt Baker.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.recordingFinished):
Set the `_recordingCanvas` to null whenever a recording has finished and been sent to the
frontend. It is also necessary to do this inside `stopRecording`, as it is possible for the
user to start and stop a recording before any actions are recorded, meaning that no
recording would be sent to the frontend and this function will never get called.
2017-09-17 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: support toggling properties
https://bugs.webkit.org/show_bug.cgi?id=176643
Reviewed by Matt Baker.
Add checkboxes to toggle (comment/uncomment) CSS properties.
* UserInterface/Base/Utilities.js:
(String.prototype.get lineCount):
(String.prototype.get lastLine):
Add string methods that are used by WI.CSSProperty.prototype._updateOwnerStyleText.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.commentOut):
(WI.CSSProperty.prototype.set text):
(WI.CSSProperty.prototype.get editable):
(WI.CSSProperty.prototype._updateOwnerStyleText):
Add methods necessary for property toggling.
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration):
(WI.CSSStyleDeclaration.prototype.get allVisibleProperties):
Add a getter that is used by SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesToRender.
(WI.CSSStyleDeclaration.prototype.get visibleProperties):
* UserInterface/Models/TextRange.js:
(WI.TextRange.prototype.clone):
(WI.TextRange.prototype.cloneAndModify):
(WI.TextRange.prototype.relativeTo):
Add methods that are used by WI.CSSProperty.prototype._updateOwnerStyleText.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor):
(.spreadsheet-style-declaration-editor .property-toggle):
(.spreadsheet-css-declaration:matches(:hover, :focus) .property-toggle,):
(.spreadsheet-style-declaration-editor .property.disabled,):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set style):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get _propertiesToRender):
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.get element):
(WI.SpreadsheetStyleProperty.prototype._update):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
(WI.SpreadsheetRulesStyleDetailsPanel):
* UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
(.cm-s-default .cm-comment,):
* UserInterface/Views/Variables.css:
(:root):
Make comment color a CSS variable.
2017-09-15 Devin Rousso <webkit@devinrousso.com>
Web Inspector: REGRESSION(r222057): recording state doesn't update when changing actions
https://bugs.webkit.org/show_bug.cgi?id=176988
Reviewed by Matt Baker.
Replace `updateActionIndex` with `updateAction`, where the currently selected RecordingAction
is passed to the DetailsSidebarPanel. Also remove the call to `this._recording.actions` in
order to ensure that all logic performed by both DetailsSidebarPanel is synchronous.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/RecordingTabContentView.js:
(WI.RecordingTabContentView.prototype._updateActionIndex):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype.async._generateContentCanvas2D):
(WI.RecordingContentView.prototype.async._generateContentCanvasWebGL):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel):
(WI.RecordingStateDetailsSidebarPanel.prototype.set recording):
(WI.RecordingStateDetailsSidebarPanel.prototype.updateAction):
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
(WI.RecordingStateDetailsSidebarPanel.prototype.updateActionIndex): Deleted.
* UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
(WI.RecordingTraceDetailsSidebarPanel):
(WI.RecordingTraceDetailsSidebarPanel.prototype.set recording):
(WI.RecordingTraceDetailsSidebarPanel.prototype.updateAction):
(WI.RecordingTraceDetailsSidebarPanel.prototype.updateActionIndex): Deleted.
2017-09-15 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas: recording parameters that include colors should show an InlineSwatch (2D canvas)
https://bugs.webkit.org/show_bug.cgi?id=176822
<rdar://problem/34402170>
Reviewed by Devin Rousso.
Show inline swatches in the canvas recording action and state sidebars.
* UserInterface/Models/Color.js:
Added helpers for dealing with CMYK and normalized RGB. The latter is
for RGB components scaled to the range [0, 1]. Also improved handling
for 8-bit channel values.
(WI.Color.rgb2hsv):
(WI.Color.cmyk2rgb):
(WI.Color.normalized2rgb):
(WI.Color._eightBitChannel):
(WI.Color.prototype._toRGBString):
(WI.Color.prototype._toRGBAString):
(WI.Color.prototype._componentToHexValue):
(WI.Color.prototype._rgbToHSL):
(WI.Color.prototype._componentToNumber): Deleted.
Replaced by _eightBitChannel.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.prototype.getColorParameters):
Get a subset of parameters that describe a color. This can be an array
containing one value (e.g. fillStyle), or multiple values, as is the
case with non-standard API functions that describe color using multiple
parameters (e.g. setFillColor).
* UserInterface/Views/InlineSwatch.css:
(.inline-swatch:not(.read-only):hover > span):
(.inline-swatch:hover > span): Deleted.
* UserInterface/Views/InlineSwatch.js:
(WI.InlineSwatch):
Read-only colors shouldn't show a context menu or hover effects.
* UserInterface/Views/RecordingActionTreeElement.css:
(.tree-outline:matches(:focus, .force-focus) .item.action > .titles .parameters > .inline-swatch):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._generateDOM.createParameterElement):
(WI.RecordingActionTreeElement._generateDOM):
(WI.RecordingActionTreeElement._createSwatchForColorParameters):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.css:
(.sidebar > .panel.details.recording-state > .content > .data-grid .inline-swatch):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D.isColorProperty):
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D.createInlineSwatch):
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
(WI.RecordingStateDetailsSidebarPanel):
2017-09-14 Joseph Pecoraro <pecoraro@apple.com>
Unreviewed rollout r222036.
The LayoutTests added with this change is flaky.
This left in the Test.js, Test.html, InspectorBackend changes
needed by later patches. They are independent of the flakey test.
Reverted changeset
Web Inspector: Timeline should show when events preventDefault() was called on an event or not
https://bugs.webkit.org/show_bug.cgi?id=176824
http://trac.webkit.org/changeset/222036
2017-09-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: make recording swizzle async
https://bugs.webkit.org/show_bug.cgi?id=176936
Reviewed by Joseph Pecoraro.
Move all swizzle functions, and all logic that depends on swizzled values, to async
functions so that await can be used to pause execution while objects load. This was
necessary primarily for swizzling Image values, as the Image is not able to be used (such as
for creating a CanvasPattern) until its "load" event has fired. Any callers of a Recording's
actions getter must now adapt to working with a promise that will resolve once all swizzling
has finished across all actions within that recording.
* .eslintrc:
* UserInterface/Models/Recording.js:
(WI.Recording):
(WI.Recording.prototype.async swizzle):
(WI.Recording.prototype.swizzle): Deleted.
Drive-by: currently, no data is added to the JSON for WebGL objects, so don't try to swizzle
them and return the placeholder value (0) instead.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.prototype.swizzle):
(WI.RecordingAction.prototype.toJSON):
(WI.RecordingAction.prototype.async _swizzle.swizzleParameter):
(WI.RecordingAction.prototype.async _swizzle.async swizzleCallFrame):
(WI.RecordingAction.prototype.async _swizzle):
* UserInterface/Models/RecordingInitialStateAction.js:
(WI.RecordingInitialStateAction):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.async _generateContentCanvas2D):
(WI.RecordingContentView.prototype.async _generateContentCanvasWebGL):
(WI.RecordingContentView.prototype._updateCanvasPath):
(WI.RecordingContentView.prototype._generateContentCanvas2D): Deleted.
(WI.RecordingContentView.prototype._generateContentCanvasWebGL): Deleted.
* UserInterface/Views/RecordingNavigationSidebarPanel.js:
(WI.RecordingNavigationSidebarPanel.prototype.set recording):
(WI.RecordingNavigationSidebarPanel.prototype.updateActionIndex):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel):
(WI.RecordingStateDetailsSidebarPanel.prototype.updateActionIndex):
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
* UserInterface/Views/RecordingTabContentView.js:
(WI.RecordingTabContentView.prototype.showRepresentedObject):
* UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
(WI.RecordingTraceDetailsSidebarPanel):
(WI.RecordingTraceDetailsSidebarPanel.prototype.updateActionIndex):
2017-09-14 Matt Baker <mattbaker@apple.com>
Web Inspector: Color created from an RGB/HSL triplet returns bad component arrays
https://bugs.webkit.org/show_bug.cgi?id=176811
<rdar://problem/34397529>
Reviewed by Joseph Pecoraro.
A Color constructed from a format and RGB/HSL triplet should set its
alpha component to 1 instead of leaving it undefined. Color properties
and member functions expect the components array to have a length of four.
* UserInterface/Models/Color.js:
(WI.Color):
2017-09-14 Joseph Pecoraro <pecoraro@apple.com>
Layout test inspector/debugger/breakpoints/resolved-dump-all-pause-locations.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=176952
Reviewed by Matt Baker.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackend.Agent.prototype.dispatchEvent):
Include the event name since that may be useful in understanding what happened.
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WI.loaded):
Register a MemoryObserver and include potentially necessary Model objects
for the Memory domain.
2017-09-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Timeline should show when events preventDefault() was called on an event or not
https://bugs.webkit.org/show_bug.cgi?id=176824
<rdar://problem/34290931>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
New string.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype._processRecord):
Include the whole data object as extra details.
* UserInterface/Models/ScriptTimelineRecord.js:
(WI.ScriptTimelineRecord):
(WI.ScriptTimelineRecord.prototype.get extraDetails):
Wholesale copy of the extra data instead of just a single property.
* UserInterface/Views/ScriptDetailsTimelineView.js:
(WI.ScriptDetailsTimelineView):
Give the name column more initial space, there is still extra space
after this adjustment but name is comfortably larger (and the most
likely to be expanded).
* UserInterface/Views/ScriptTimelineDataGridNode.js:
(WI.ScriptTimelineDataGridNode.prototype.get subtitle):
Include "default prevented" as the event's subtitle if it was prevented.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackend.Agent.prototype.dispatchEvent):
(InspectorBackend.Agent):
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WI.loaded):
Add the ScriptProfilerObserver to tests since it is on by default for Timelines.
2017-09-14 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r222015.
The LayoutTests added with this change are flaky.
Reverted changeset:
"Web Inspector: Timeline should show when events
preventDefault() was called on an event or not"
https://bugs.webkit.org/show_bug.cgi?id=176824
http://trac.webkit.org/changeset/222015
2017-09-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Timeline should show when events preventDefault() was called on an event or not
https://bugs.webkit.org/show_bug.cgi?id=176824
<rdar://problem/34290931>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
New string.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype._processRecord):
Include the whole data object as extra details.
* UserInterface/Models/ScriptTimelineRecord.js:
(WI.ScriptTimelineRecord):
(WI.ScriptTimelineRecord.prototype.get extraDetails):
Wholesale copy of the extra data instead of just a single property.
* UserInterface/Views/ScriptDetailsTimelineView.js:
(WI.ScriptDetailsTimelineView):
Give the name column more initial space, there is still extra space
after this adjustment but name is comfortably larger (and the most
likely to be expanded).
* UserInterface/Views/ScriptTimelineDataGridNode.js:
(WI.ScriptTimelineDataGridNode.prototype.get subtitle):
Include "default prevented" as the event's subtitle if it was prevented.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackend.Agent.prototype.dispatchEvent):
(InspectorBackend.Agent):
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WI.loaded):
Add the ScriptProfilerObserver to tests since it is on by default for Timelines.
2017-09-13 Devin Rousso <webkit@devinrousso.com>
Web Inspector: allow recordings to be saved via ⌘-S in the Recording tab
https://bugs.webkit.org/show_bug.cgi?id=175284
Reviewed by Matt Baker.
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype.get supportsSave):
(WI.RecordingContentView.prototype.get saveData):
* UserInterface/Views/RecordingNavigationSidebarPanel.js:
(WI.RecordingNavigationSidebarPanel.prototype._exportNavigationItemClicked):
Use the current content view's saveData when exporting.
2017-09-13 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Event Listeners section does not update when listeners are added/removed
https://bugs.webkit.org/show_bug.cgi?id=170570
<rdar://problem/31501645>
Reviewed by Joseph Pecoraro.
* UserInterface/Protocol/DOMObserver.js:
(WI.DOMObserver.prototype.didAddEventListener):
(WI.DOMObserver.prototype.willRemoveEventListener):
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager.prototype.didAddEventListener):
(WI.DOMTreeManager.prototype.willRemoveEventListener):
* UserInterface/Models/DOMNode.js:
Add "EventListenersChanged" event. Fired when an event listener is added or removed.
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners):
(WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners):
(WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
Refresh the event listeners section whenever a node's event listeners change.
2017-09-13 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Sort by size issues with Cookies and ApplicationCache DataGrids
https://bugs.webkit.org/show_bug.cgi?id=176879
<rdar://problem/34237096>
Reviewed by Matt Baker.
* UserInterface/Views/ApplicationCacheFrameContentView.js:
(WI.ApplicationCacheFrameContentView.prototype._sortDataGrid):
(WI.ApplicationCacheFrameContentView.prototype._populateDataGrid):
This uses very dumb DataGridNodes with a pure data object. In that
object `size` is a bytes string not a number. Include the number size
in this data object that can be used during sorting.
* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype._rebuildTable):
Simplify creation. Also don't reset sort options. Note that here the
DataGridNodes have access to the Cookie object and can already sort size
using the cookie's size (a number) and not the data's size (string).
* UserInterface/Views/DataGrid.js:
(WI.DataGrid.prototype.sortNodes):
(WI.DataGrid.prototype._sortNodesCallback):
If sortNodes was called twice, it would defer the sort and actually
do the sort with the first comparator and not the latest, preferred
comparator. Make it use the latest comparator.
2017-09-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: display @media section headers
https://bugs.webkit.org/show_bug.cgi?id=176289
<rdar://problem/34228389>
Reviewed by Devin Rousso.
Prepend CSS media query selectors to every matching rule.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration .media-label):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._createMediaHeader):
Don't localize "@media" since it's CSS code.
Don't display "all" or "screen" media query selectors. One of the goals of the
Styles sidebar redesign is to fit more data.
2017-09-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Frontend should be made to expect and handle disabled properties
https://bugs.webkit.org/show_bug.cgi?id=166787
<rdar://problem/34379593>
Reviewed by Joseph Pecoraro.
This change introduces WI.CSSStyleDeclaration.prototype.allProperties getter,
that includes both enabled and disabled (commented out) CSS properties.
The existing WI.CSSStyleDeclaration.prototype.properties getter only includes enabled CSS properties,
same as before the backend change.
There is no behaviour change in the current styles sidebar. The new redesigned styles sidebar will
use disabled properties and display them as commented out.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.get attached):
Rename `enabled` to `attached`, as it didn't correspond to `_enabled` property. Attached means that the property
is enabled and has a ownerStyle with a set index (unless it's a computed style, where index is not applicable).
(WI.CSSProperty.prototype.get enabled):
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration.prototype.get allProperties):
Add allProperties getter that will be used in the new styles sidebar.
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype._markOverriddenProperties):
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WI.CSSStyleDeclarationTextEditor.prototype.highlightProperty.propertiesMatch):
Rename "enabled" to "attached" without any behavior change.
2017-09-13 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Escape in global search field should clear it
https://bugs.webkit.org/show_bug.cgi?id=176764
Reviewed by Timothy Hatcher.
* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole.prototype._toggleOrFocus):
Don't implicitly prevent default. So if we didn't cause an action we
can let the default system action happen.
* UserInterface/Views/SearchBar.js:
(WI.SearchBar):
Remove unused keyboard shortcuts.
2017-09-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add Experimental setting for new Network tab
https://bugs.webkit.org/show_bug.cgi?id=176750
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
New files and strings.
* UserInterface/Base/Setting.js:
New experimental setting.
* UserInterface/Views/LegacyNetworkTabContentView.js:
(WI.LegacyNetworkTabContentView.isTabAllowed):
Legacy tab availability depends on the setting.
* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView):
(WI.NetworkTabContentView.isTabAllowed):
(WI.NetworkTabContentView.prototype.get contentBrowser):
(WI.NetworkTabContentView.prototype.get type):
(WI.NetworkTabContentView.prototype.canShowRepresentedObject):
(WI.NetworkTabContentView.prototype.get supportsSplitContentBrowser):
Modern network tab. Only difference right now is it allows the split console.
* UserInterface/Views/NetworkTableContentView.js: Added.
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get selectionPathComponents):
(WI.NetworkTableContentView.prototype.get navigationItems):
(WI.NetworkTableContentView.prototype.shown):
(WI.NetworkTableContentView.prototype.hidden):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.layout):
(WI.NetworkTableContentView.prototype.handleClearShortcut):
(WI.NetworkTableContentView.prototype._resourceCachingDisabledSettingChanged):
(WI.NetworkTableContentView.prototype._toggleDisableResourceCache):
Add a stubbed out ContentView. This will be implemented next.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
Add an experimental setting to toggle the new network tab. Only
show the experimental settings that relate to the debuggable target.
For JSContext targets, none of the settings are applicable, so don't
even show the experimental section.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
Treat all network tabs the same.
2017-09-11 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas: improve recording controls and state management
https://bugs.webkit.org/show_bug.cgi?id=176762
<rdar://problem/34382294>
Reviewed by Devin Rousso.
CanvasManager should be responsible for starting/stopping recordings
and tracking state. Fixing this layering issue lets CanvasContentView
better manage its recording UI.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager):
(WI.CanvasManager.prototype.get recordingCanvas):
(WI.CanvasManager.prototype.startRecording):
(WI.CanvasManager.prototype.stopRecording):
* UserInterface/Models/Canvas.js:
(WI.Canvas.prototype.get isRecording):
(WI.Canvas.prototype.toggleRecording): Deleted.
* UserInterface/Views/CanvasContentView.css:
(.navigation-bar > .item.canvas-record.disabled):
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.shown):
(WI.CanvasContentView.prototype._toggleRecording):
(WI.CanvasContentView.prototype._recordingFinished):
(WI.CanvasContentView.prototype._updateRecordNavigationItem):
2017-09-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Cleanup and test MIMETypeUtilities
https://bugs.webkit.org/show_bug.cgi?id=176731
Reviewed by Matt Baker.
* UserInterface/Base/FileUtilities.js:
(WI.saveDataToFile):
* UserInterface/Models/SourceMapResource.js:
(WI.SourceMapResource):
Update callers to handle new return values.
* UserInterface/Base/MIMETypeUtilities.js:
(WI.fileExtensionForURL):
Return null in error cases.
Only provide the content after the last period.
(WI.fileExtensionForMIMEType):
Handle generic "+json" and "+xml" cases.
* UserInterface/Test.html:
Include MIMETypeUtilities for testing.
2017-09-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Rename NetworkTab / NetworkSidebar to LegacyNetwork*
https://bugs.webkit.org/show_bug.cgi?id=176739
Reviewed by Matt Baker.
* UserInterface/Main.html:
* UserInterface/Views/LegacyNetworkSidebarPanel.css: Renamed from Source/WebInspectorUI/UserInterface/Views/NetworkSidebarPanel.css.
* UserInterface/Views/LegacyNetworkSidebarPanel.js: Renamed from Source/WebInspectorUI/UserInterface/Views/NetworkSidebarPanel.js.
* UserInterface/Views/LegacyNetworkTabContentView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/NetworkTabContentView.js.
Rename resources.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
* UserInterface/Views/NetworkGridContentView.js:
(WI.NetworkGridContentView):
(WI.NetworkGridContentView.prototype._networkTimelineRecordAdded):
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
Update names at callsites.
2017-09-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused parameter to UIString
https://bugs.webkit.org/show_bug.cgi?id=176738
Reviewed by Matt Baker.
* UserInterface/Base/LoadLocalizedStrings.js:
(WI.UIString):
Remove unused parameter. We moved to String.format for this behavior a while ago.
2017-09-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Do not allow the split console in the Settings tab
https://bugs.webkit.org/show_bug.cgi?id=176726
Reviewed by Matt Baker.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype.get supportsSplitContentBrowser):
2017-09-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include a DebugContentView for debugging
https://bugs.webkit.org/show_bug.cgi?id=176733
Reviewed by Matt Baker.
Provide a DebugContentView which can be used to debug lifecycle
events of a ContentView (shown, hidden, closed), and displays a
provided string. It can be created like so:
`new WI.DebugContentView("Name")`
* UserInterface/Debug/DebugContentView.css: Added.
(.content-view.debug):
* UserInterface/Debug/DebugContentView.js: Added.
(WI.DebugContentView):
(WI.DebugContentView.prototype.shown):
(WI.DebugContentView.prototype.hidden):
(WI.DebugContentView.prototype.closed):
Log events for debugging.
* UserInterface/Main.html:
Include new Debug resources.
2017-09-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Make Dashboard Timeline icon and Timeline tab icon more similar
https://bugs.webkit.org/show_bug.cgi?id=176582
Reviewed by Timothy Hatcher.
* UserInterface/Images/Time.svg:
Change the clock hands to match the time of Timelines.svg.
2017-09-10 Matt Baker <mattbaker@apple.com>
Web Inspector: change style of RecordingNavigationSidebarPanel
https://bugs.webkit.org/show_bug.cgi?id=175451
<rdar://problem/34040769>
Reviewed by Devin Rousso.
This patch adds UI polish to the Canvas recording navigation sidebar:
- New icons for Canvas2D operations
- Removed extraneous colors: zebra striping, frame element background color
- Visual action color changed to match details sidebar "changed" color
- Make tree item indent a convenient multiple of the base indent
- Move RecordingActionTreeElement styles to a separate file
* UserInterface/Images/Clip.svg: Added.
* UserInterface/Images/Composite.svg: Added.
* UserInterface/Images/Fill.svg: Added.
* UserInterface/Images/LineStyle.svg: Added.
* UserInterface/Images/Palette.svg: Added.
* UserInterface/Images/PathArc.svg: Added.
* UserInterface/Images/PathCurve.svg: Added.
* UserInterface/Images/PathEllipse.svg: Added.
* UserInterface/Images/PathLineTo.svg: Added.
* UserInterface/Images/PathMoveTo.svg: Added.
* UserInterface/Images/PathRect.svg: Added.
* UserInterface/Images/Pixels.svg: Added.
* UserInterface/Images/PointInPath.svg: Added.
* UserInterface/Images/PointInStroke.svg: Added.
* UserInterface/Images/Shadow.svg: Added.
* UserInterface/Images/Stroke.svg: Added.
* UserInterface/Images/Text.svg: Added.
* UserInterface/Images/Transform.svg: Added.
New icons for Canvas2D operations.
* UserInterface/Main.html:
New file.
* UserInterface/Views/GeneralTreeElement.js:
(WI.GeneralTreeElement.prototype.customTitleTooltip):
(WI.GeneralTreeElement.prototype._updateTitleTooltip):
Allow derived classes to supply a custom tooltip, when
simply getting the title element text is insufficient.
* UserInterface/Views/RecordingActionTreeElement.css: Added.
(.item.action.initial-state > .icon):
(.tree-outline:not(:focus, .force-focus) .item.action:not(.initial-state, .parent, .invalid) > .icon):
(.item.action:not(.initial-state)::before):
(body[dir=ltr] .item.action::before):
(body[dir=rtl] .item.action::before):
(.tree-outline:matches(:focus, .force-focus) .item.action.selected:not(.initial-state, .invalid) > .icon):
(body:not(.window-inactive, .window-docked-inactive) :matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,):
(.tree-outline[data-indent="1"] .item.action::before,):
(.tree-outline[data-indent="3"] .item.action::before):
(.tree-outline[data-indent="4"] .item.action::before):
(.tree-outline[data-indent="5"] .item.action::before):
(.tree-outline[data-indent="6"] .item.action::before):
(.tree-outline[data-indent="7"] .item.action::before):
(body[dir=ltr] .tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
(body[dir=rtl] .tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
(.item.action.visual:not(.selected, .invalid)):
(.item.action.attribute > .titles .parameters::before):
(.item.action:not(.attribute) > .titles .parameters::before):
(.item.action:not(.attribute) > .titles .parameters::after):
(.item.action > .titles .parameter:not(:last-child)::after):
(.item.action:not(.selected) > .titles .parameter.swizzled):
(.item.action.composite > .icon):
(.item.action.fill > .icon):
(.item.action.image > .icon):
(.item.action.line-style > .icon):
(.item.action.shadow > .icon):
(.item.action.stroke > .icon):
(.item.action.style > .icon):
(.item.action.text > .icon):
(.item.action.transform > .icon):
(.item.action.arc > .icon):
(.item.action.clip > .icon):
(.item.action.curve > .icon):
(.item.action.ellipse > .icon):
(.item.action.line-to > .icon):
(.item.action.move-to > .icon):
(.item.action.point-in-path > .icon):
(.item.action.point-in-stroke > .icon):
(.item.action.rect > .icon):
(.item.action.restore > .icon):
(.item.action.save > .icon):
(.item.action.invalid > .icon):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement):
(WI.RecordingActionTreeElement._generateDOM.createParameterElement):
(WI.RecordingActionTreeElement._generateDOM):
(WI.RecordingActionTreeElement._getClassNames):
Broke out into its own helper, to simplify _generateDOM which had
too many responsibilities.
(WI.RecordingActionTreeElement._classNameForAction.classNameForActionName):
(WI.RecordingActionTreeElement._classNameForAction):
Get an icon for the action "type". Actions are grouped by similar
operations. For example, lineCap, lineDash, lineJoin, lineWidth, and
miterLimit are assigned the icon LineStyle.svg.
(WI.RecordingActionTreeElement.prototype.customTitleTooltip):
* UserInterface/Views/RecordingNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.recording > .content > .tree-outline .item.folder-icon > .icon):
(.sidebar > .panel.navigation.recording > .content > .tree-outline:not(:empty)): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action, .selected).expanded): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before): Deleted.
(body[dir=ltr] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before): Deleted.
(body[dir=rtl] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="2"] .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="3"] .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="4"] .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="5"] .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="6"] .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="7"] .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content .action > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.function > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.attribute.getter > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .tree-outline:matches(:focus, .force-focus) .action.attribute.getter.selected > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.attribute.boolean > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.attribute.number > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.attribute.object > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.attribute.string > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action) > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action:matches(.invalid, .missing) > .icon): Deleted.
(body[dir=ltr] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon): Deleted.
(body[dir=rtl] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.visual:not(.selected, .invalid)): Deleted.
(.sidebar > .panel.navigation.recording > .content .action:not(.selected, .initial-state) > .titles .parameter.swizzled): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles :matches(.name, .parameter.invalid)): Deleted.
* UserInterface/Views/RecordingNavigationSidebarPanel.js:
2017-09-08 Joseph Pecoraro <pecoraro@apple.com>
Uncaught Exception: TypeError: this._heapSnapshot.addEventListener is not a function.
https://bugs.webkit.org/show_bug.cgi?id=176633
Reviewed by Michael Saboff.
* UserInterface/Proxies/HeapSnapshotDiffProxy.js:
(WI.HeapSnapshotDiffProxy):
This class has listeners of another object's events. It should extend WI.Object.
2017-09-08 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas: changes to currentX/currentY aren't highlighted in the details sidebar
https://bugs.webkit.org/show_bug.cgi?id=176569
Reviewed by Matt Baker.
* UserInterface/Models/RecordingAction.js:
Add entries to WI.RecordingAction._stateModifiers for each path function.
2017-09-07 Joseph Pecoraro <pecoraro@apple.com>
Augmented Inspector: Provide a way to inspect a DOM Node (DOM.inspect)
https://bugs.webkit.org/show_bug.cgi?id=176563
<rdar://problem/19639583>
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
Always create the element search toolbar icon. Only show it if the DOM domain
is available. With augmented agents the DOM domain may be activated later.
* UserInterface/Protocol/DOMObserver.js:
(WI.DOMObserver.prototype.inspect):
Select the node in the DOM tree outline.
2017-09-07 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas RecordingAction tree outline virtualization is broken
https://bugs.webkit.org/show_bug.cgi?id=176547
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.updateVirtualizedElements.walk):
(WI.TreeOutline.prototype.updateVirtualizedElements):
Pass the current `count` to each recursive call of `walk` so that the cumulative index of a
TreeElement in any given sub-tree is correct.
Drive-by: if there is a focused TreeElement when scrolling, only change the current
`scrollTop` if it is not already visible. Also rewrote some loops for clarity.
2017-09-07 Devin Rousso <webkit@devinrousso.com>
Unreviewed, change my copyright email.
* Scripts/copy-user-interface-resources.pl:
* UserInterface/Controllers/CodeMirrorSpringEditingController.js:
* UserInterface/Images/AnimationPlayStatePaused.svg:
* UserInterface/Images/AnimationPlayStateRunning.svg:
* UserInterface/Images/CSSVariable.svg:
* UserInterface/Images/ListStylePositionInside.svg:
* UserInterface/Images/ListStylePositionOutside.svg:
* UserInterface/Images/StyleRule.svg:
* UserInterface/Images/StyleRulePseudoElement.svg:
* UserInterface/Models/Collection.js:
* UserInterface/Models/ResourceCollection.js:
* UserInterface/Views/CollectionContentView.css:
* UserInterface/Views/CollectionContentView.js:
* UserInterface/Views/ContextMenuUtilities.js:
* UserInterface/Views/GeneralTabBarItem.js:
* UserInterface/Views/GradientEditor.css:
* UserInterface/Views/GradientEditor.js:
* UserInterface/Views/InlineSwatch.css:
* UserInterface/Views/InlineSwatch.js:
* UserInterface/Views/PinnedTabBarItem.js:
* UserInterface/Views/SettingsTabContentView.css:
* UserInterface/Views/SettingsTabContentView.js:
* UserInterface/Views/SpringEditor.css:
* UserInterface/Views/SpringEditor.js:
* UserInterface/Views/StyleRuleIcons.css:
* UserInterface/Views/TabBarItem.js:
* UserInterface/Views/TitleView.css:
* UserInterface/Views/TitleView.js:
* UserInterface/Views/VisualStyleBackgroundPicker.css:
* UserInterface/Views/VisualStyleBackgroundPicker.js:
* UserInterface/Views/VisualStyleBasicInput.js:
2017-09-06 Matt Baker <mattbaker@apple.com>
Web Inspector: Relax the maximum sidebar width
https://bugs.webkit.org/show_bug.cgi?id=175808
<rdar://problem/34005339>
Reviewed by Devin Rousso.
This patch introduces a constant, `minimumContentBrowserWidth`, which
constrains the maximum width of either sidebar:
maxSidebarWidth = window.innerWidth - minimumContentBrowserWidth - otherSidebarWidth
A value of 100px for `minimumContentBrowserWidth` leaves enough space for
three NavigationItems at their minimum width (32px), with a few pixels
left over for good measure. For most tabs this will ensure that the buttons
for showing the sidebars will be visible, along with an addition button.
* UserInterface/Base/Main.js:
* UserInterface/Views/Sidebar.js:
(WI.Sidebar.prototype.get maximumWidth):
2017-09-06 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Support overloaded CanvasRenderingContext2D actions with identical parameter counts
https://bugs.webkit.org/show_bug.cgi?id=176178
<rdar://problem/34192229>
Reviewed by Matt Baker.
* UserInterface/Models/Recording.js:
(WI.Recording.displayNameForSwizzleType):
(WI.Recording.prototype.swizzle):
Replace WI.Recording.Swizzle with an object of swizzle type keys to int values. This object
matches the values in WebCore::RecordingSwizzleTypes.h.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.fromPayload):
(WI.RecordingAction.prototype.get swizzleTypes):
(WI.RecordingAction.prototype.swizzle):
(WI.RecordingAction.prototype.toJSON):
(WI.RecordingAction.prototype.parameterSwizzleTypeForTypeAtIndex): Deleted.
Replace WI.RecordingAction._parameterSwizzleTypeForTypeAtIndex with an array of parameter
types sent in the payload. This gives more control over the swizzling to the JSON, but also
simplifies the way we regenerate the data in the frontend.
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._generateDOM):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype._generateContentCanvas2D):
(WI.RecordingContentView.prototype._applyAction):
* UserInterface/Views/RecordingNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles :matches(.name, .parameter.invalid)):
(.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles .name,): Deleted.
2017-09-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: ⌘E and ⌘G do not work in main content area when quick console drawer is open
https://bugs.webkit.org/show_bug.cgi?id=176433
Reviewed by Brian Burg.
Make the ⌘E and ⌘G keyboard shortcuts behave more like the global ⌘K clear shortcut.
Instead of keeping them inside of FindBanner, and enabling/disabling them when they
make sense to apply, we make a single global instance of the keyboard shortcut and
apply it to whatever content view / content browser is active. This avoids conflicts
in situations where there are two ContentViews that are visible and each can handle
the keyboard shortcut.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
New keyboard shortcuts.
(WI._populateFind):
(WI._findNext):
(WI._findPrevious):
Perform the shortcut on the active content view or content browser.
* UserInterface/Views/ContentBrowser.js:
(WI.ContentBrowser.prototype.shown):
(WI.ContentBrowser.prototype.hidden):
(WI.ContentBrowser.prototype.handlePopulateFindShortcut):
(WI.ContentBrowser.prototype.handleFindNextShortcut):
(WI.ContentBrowser.prototype.handleFindPreviousShortcut):
(WI.ContentBrowser.prototype.findBannerSearchQueryForSelection): Deleted.
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype.handlePopulateFindShortcut):
(WI.LogContentView.prototype.handleFindNextShortcut):
(WI.LogContentView.prototype.handleFindPreviousShortcut):
ContentBrowser and LogContentView (the only content view with a custom find banner)
now each handle the global keyboard shortcut handlers to do the right thing for
their respective cases.
* UserInterface/Views/FindBanner.js:
(WI.FindBanner.prototype.enableKeyboardShortcuts): Deleted.
(WI.FindBanner.prototype.disableKeyboardShortcuts): Deleted.
(WI.FindBanner.prototype._populateSearchQueryFromSelection): Deleted.
Move keyboard shortcut handling up to Main.js to be global.
* UserInterface/Views/ContentView.js:
(WI.ContentView.prototype.searchQueryWithSelection):
Default implementation should grab the selected text from the selection.
Previously shortcut selections only worked for selections in text editors.
2017-09-05 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: display "Inherited From" section headers
https://bugs.webkit.org/show_bug.cgi?id=176033
<rdar://problem/34116930>
Reviewed by Devin Rousso.
Compared to the old styles sidebar, the new "Inherited From" sections are more compact.
One of the goals of the styles redesign is to make it fit more data vertically.
The contrast is inceased. The text is darker while the background stayed the same.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
(.spreadsheet-style-panel .section-inherited):
(.spreadsheet-style-panel .section-inherited .node-link):
(.spreadsheet-style-panel .section-inherited .node-link:hover):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
Don't show two identical "Inherited From" sections.
2017-09-05 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Layout flashing for internal View.prototype.layout
https://bugs.webkit.org/show_bug.cgi?id=176389
Reviewed by Matt Baker.
Add a checkbox to Settings (Debug panel) to draw an orange outline around an element every time View.prototype.layout is called.
This is similar to paint flashing, except this is only for View.prototype.layout.
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createDebugSettingsView):
* UserInterface/Views/View.js:
(WI.View.prototype._layoutSubtree):
(WI.View.prototype._drawLayoutFlashingOutline):
2017-09-04 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: hook up real data to spreadsheet style editor
https://bugs.webkit.org/show_bug.cgi?id=175343
<rdar://problem/33784793>
Reviewed by Devin Rousso.
Replace static HTML added in <https://webkit.org/b/174838> with actual data.
Addressed in this patch:
- CSS rules can be copied.
- Source links work as expected.
- Nonmatching selectors are grayed out.
Known limitations:
- Neither CSS selectors nor CSS properties are editable.
- "Inherited from" and media query section headers are missing.
- No syntax highlighting of complex CSS values, e.g. hsl(0, 0%, 70%).
* UserInterface/Main.html:
* UserInterface/Models/CSSStyleDeclaration.js:
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WI.CSSStyleDeclarationTextEditor):
* UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
(WI.CSSStyleDetailsSidebarPanel):
* UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.js: Removed.
Rename RulesStyleSpreadsheetDetailsPanel to SpreadsheetRulesStyleDetailsPanel. All files related to the spreadsheet editor start with "Spreadsheet" now.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css: Added.
(.spreadsheet-style-declaration-editor):
(.spreadsheet-style-declaration-editor .name):
(.spreadsheet-style-declaration-editor .value):
(.spreadsheet-style-declaration-editor.no-properties):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js: Added.
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get delegate):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set delegate):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get style):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set style):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get _propertiesToRender):
Similar condition is commonly used in CSSStyleDeclarationTextEditor. Abstact it out to its own method.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._renderProperty):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css: Copied from Source/WebInspectorUI/UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.css.
(.spreadsheet-css-declaration):
(.spreadsheet-css-declaration .origin):
(.spreadsheet-css-declaration.locked .origin::after):
(.spreadsheet-css-declaration .origin .go-to-link):
(.spreadsheet-css-declaration .origin .go-to-link:hover):
(.spreadsheet-css-declaration .styles-source):
(.spreadsheet-css-declaration .selector.style-attribute):
(.spreadsheet-css-declaration .selector > span):
(.spreadsheet-css-declaration .selector > .matched):
(.spreadsheet-css-declaration .properties):
(.spreadsheet-css-declaration.locked):
(.spreadsheet-css-declaration .locked-icon):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js: Added.
(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get element):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get style):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorFocused):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get locked):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get selectorEditable):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css: Renamed from Source/WebInspectorUI/UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.css.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js: Added.
(WI.SpreadsheetRulesStyleDetailsPanel):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
* UserInterface/Views/StyleDetailsPanel.js:
(WI.StyleDetailsPanel.prototype.filterDidChange):
* UserInterface/Views/View.js:
(WI.View.prototype.removeAllSubviews):
Add a method to remove all subviews more efficiently.
2017-08-29 Matt Baker <mattbaker@apple.com>
Web Inspector: Critical content browser toolbar buttons are hidden at narrow widths
https://bugs.webkit.org/show_bug.cgi?id=175999
Reviewed by Devin Rousso.
This patch adds a VisibilityPriority concept to NavigationItems. If a
NavigationBar cannot fit all of its items in the available space, items
are hidden to make room, starting with the lowest priority item. Consecutive
dividers are then collapsed, as well as leading and trailing dividers.
* UserInterface/Main.html:
New file.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
* UserInterface/Views/ConsoleDrawer.js:
(WI.ConsoleDrawer):
* UserInterface/Views/ContentBrowser.js:
(WI.ContentBrowser):
* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView):
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
Set `High` and `Low` priorities, and group the back/forward buttons.
* UserInterface/Views/GroupNavigationItem.js: Added.
(WI.GroupNavigationItem):
(WI.GroupNavigationItem.prototype.get navigationItems):
(WI.GroupNavigationItem.prototype.get minimumWidth):
(WI.GroupNavigationItem.prototype.updateLayout):
(WI.GroupNavigationItem.prototype.didAttach):
(WI.GroupNavigationItem.prototype.didDetach):
NavigationItem groups. Grouped items are shown/hidden together.
* UserInterface/Views/HierarchicalPathNavigationItem.js:
(WI.HierarchicalPathNavigationItem.prototype.updateLayout):
* UserInterface/Views/ImageResourceContentView.js:
(WI.ImageResourceContentView):
* UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
(WI.IndexedDatabaseObjectStoreContentView):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView):
Set `High` and `Low` priorities.
* UserInterface/Views/NavigationBar.css:
(.navigation-bar .item.force-hidden):
New hidden class, which must be tracked separately from ".hidden".
The former is an implementation detail of NavigationBar, while the
latter is set by the client.
* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype.insertNavigationItem):
(WI.NavigationBar.prototype.removeNavigationItem):
(WI.NavigationBar.prototype.findNavigationItem.matchingSelfOrChild):
(WI.NavigationBar.prototype.findNavigationItem):
(WI.NavigationBar.prototype.layout.forceItemHidden):
(WI.NavigationBar.prototype.layout.isDivider):
(WI.NavigationBar.prototype.layout.calculateVisibleItemWidth):
(WI.NavigationBar.prototype.layout):
(WI.NavigationBar.prototype._calculateMinimumWidth):
(WI.NavigationBar.prototype.get _visibleNavigationItems):
(WI.NavigationBar):
* UserInterface/Views/NavigationItem.js:
Add support for visibility priority, an integer value that determines the
order in which items are hidden when the NavigationBar becomes too narrow
to fit all of items child items. NavigationIte3m defines constants for
Low, Normal (the default), and High priority.
(WI.NavigationItem):
(WI.NavigationItem.prototype.get minimumWidth):
(WI.NavigationItem.prototype.get width):
(WI.NavigationItem.prototype.get visibilityPriority):
(WI.NavigationItem.prototype.set visibilityPriority):
(WI.NavigationItem.prototype.updateLayout):
(WI.NavigationItem.prototype.didAttach):
(WI.NavigationItem.prototype.didDetach):
Encapsulate the setting of the parent NavigationBar. Needed so that
GroupNavigationItem can forward this action to its children.
* UserInterface/Views/NetworkGridContentView.js:
(WI.NetworkGridContentView):
* UserInterface/Views/RadioButtonNavigationItem.js:
(WI.RadioButtonNavigationItem.prototype.updateLayout):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
* UserInterface/Views/ScriptContentView.js:
(WI.ScriptContentView):
* UserInterface/Views/TextContentView.js:
(WI.TextContentView):
* UserInterface/Views/TextResourceContentView.js:
(WI.TextResourceContentView):
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView):
Set `High` and `Low` priorities, and group Timeline view mode buttons.
2017-08-29 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION(r220235): Web Inspector: Global search should not happen incrementally
https://bugs.webkit.org/show_bug.cgi?id=176063
Reviewed by Devin Rousso.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
* UserInterface/Views/SearchBar.js:
(WI.SearchBar):
(WI.SearchBar.prototype._handleKeydownEvent):
Remove delegate and simplify setting incremental.
2017-08-29 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Convert all methods in Utilities.js to ECMAScript 2015 shorthand syntax
https://bugs.webkit.org/show_bug.cgi?id=176067
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Utilities.js:
(get return):
(addStringToken):
(prettyFunctionName):
(warn):
(error):
(isEmptyObject):
(isEnterKey):
(resolveDotsInPath):
(parseMIMEType):
(simpleGlobStringToRegExp):
(defaultComparator):
(get Object):
(appendWebInspectorSourceURL):
(appendWebInspectorConsoleEvaluationSourceURL):
(isWebInspectorInternalScript):
(isWebInspectorConsoleEvaluationScript):
(isWebKitInjectedScript):
(isWebKitInternalScript):
(isFunctionStringNativeCode):
(isTextLikelyMinified):
(doubleQuotedString):
(insertionIndexForObjectInListSortedByFunction):
(insertObjectIntoSortedArray):
(decodeBase64ToBlob):
2017-08-29 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Optimize View.prototype.removeSubview
https://bugs.webkit.org/show_bug.cgi?id=176041
Reviewed by Matt Baker.
Look up a subview in an array only once, not twice.
* UserInterface/Base/Utilities.js:
(Array.prototype.removeAll):
(Array.prototype.remove):
Split Array.propotype.remove(value, onlyFirst) into Array.propotype.removeAll(value) and
Array.propotype.remove(value).
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype._debuggerBreakpointOptions):
* UserInterface/Views/ContentViewContainer.js:
(WI.ContentViewContainer.prototype._clearTombstonesForContentView):
(WI.ContentViewContainer.prototype._disassociateFromContentView):
* UserInterface/Views/View.js:
(WI.View.prototype.removeSubview):
2017-08-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove some unused DataGrid code
https://bugs.webkit.org/show_bug.cgi?id=176029
Reviewed by Matt Baker.
* UserInterface/Views/DataGrid.js:
(WI.DataGrid.prototype.get copyTextDelimiter):
(WI.DataGrid.prototype.set copyTextDelimiter):
(WI.DataGrid.prototype.resizerDragging):
(WI.DataGrid.prototype.columnWidthsMap): Deleted.
(WI.DataGrid.prototype.applyColumnWidthsMap): Deleted.
(WI.DataGrid.prototype.get resizeMethod): Deleted.
(WI.DataGrid.prototype.set resizeMethod): Deleted.
2017-08-27 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Record actions performed on WebGLRenderingContext
https://bugs.webkit.org/show_bug.cgi?id=174483
<rdar://problem/34040722>
Reviewed by Matt Baker.
* UserInterface/Models/Recording.js:
(WI.Recording):
(WI.Recording.fromPayload):
(WI.Recording.prototype.swizzle):
Add swizzle types for WebGL parameters.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.fromPayload):
(WI.RecordingAction.prototype.get snapshot):
(WI.RecordingAction.prototype.swizzle):
(WI.RecordingAction.prototype.toJSON):
Include an optional fourth parameter `snapshot` that will be sent for visual actions when
recording WebGL canvas contexts.
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.get navigationItems):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.shown):
(WI.RecordingContentView.prototype._generateContentCanvasWebGL):
* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording :matches(img, canvas)):
(.content-view:not(.tab).recording canvas): Deleted.
Instead of regenerating the canvas context in the WebInspector frontend, just display the
snapshot image for the last visual action.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._generateDOM):
2017-08-24 Devin Rousso <webkit@devinrousso.com>
Web Inspector: add filter for draw actions in Recordings
https://bugs.webkit.org/show_bug.cgi?id=175448
<rdar://problem/34040764>
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/RecordingNavigationSidebarPanel.js:
(WI.RecordingNavigationSidebarPanel.prototype.initialLayout):
(WI.RecordingNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
Add button to filter visual actions.
Drive-by fix: ensure that frame folders are still visible when filtering.
* UserInterface/Images/Paint.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/PaintFlashing.svg.
* UserInterface/Images/gtk/Paint.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/gtk/PaintFlashing.svg.
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
Rename PaintFlashing.svg to Paint.svg.
2017-08-24 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Create experimental Layers tab
https://bugs.webkit.org/show_bug.cgi?id=175728
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
* UserInterface/Base/Setting.js:
* UserInterface/Images/Layers.svg: Added.
* UserInterface/Main.html:
* UserInterface/Views/Layers3DContentView.js: Added.
* UserInterface/Views/LayersTabContentView.js: Added.
* UserInterface/Views/SettingsTabContentView.js:
2017-08-24 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Table grid shouldn't show behind empty state
https://bugs.webkit.org/show_bug.cgi?id=175943
Reviewed by Brian Burg.
* UserInterface/Views/RecordingNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.recording > .content > .tree-outline):
(.sidebar > .panel.navigation.recording > .content > .tree-outline:not(:empty)):
Only apply the background when the TreeOutline has children.
2017-08-23 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Make lock icon crispier
https://bugs.webkit.org/show_bug.cgi?id=175868
Reviewed by Matt Baker.
* UserInterface/Images/Locked.svg:
2017-08-22 Devin Rousso <webkit@devinrousso.com>
Web Inspector: provide way for ShaderPrograms to be enabled/disabled
https://bugs.webkit.org/show_bug.cgi?id=175400
Reviewed by Matt Baker.
Adds a status element to ShaderProgramTreeElement that, when clicked, will toggle the
disabled state of the corresponding ShaderProgram. Disabled shader programs will not draw
anything to the context.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Models/ShaderProgram.js:
(WI.ShaderProgram):
(WI.ShaderProgram.prototype.get disabled):
(WI.ShaderProgram.prototype.toggleDisabled):
* UserInterface/Views/ShaderProgramTreeElement.js:
(WI.ShaderProgramTreeElement):
(WI.ShaderProgramTreeElement.prototype.selectOnMouseDown):
(WI.ShaderProgramTreeElement.prototype._disabledImageElementClicked):
* UserInterface/Views/ShaderProgramTreeElement.css: Added.
(.item.shader-program .status > img):
(.item.shader-program:not(:hover, .selected, .disabled) .status > img):
(.tree-outline:matches(:focus, .force-focus) .item.shader-program.selected .status > img):
(.item.shader-program.disabled > *):
2017-08-21 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Can't copy text from "View variable value" popover in Styles sidebar
https://bugs.webkit.org/show_bug.cgi?id=175758
Reviewed by Matt Baker.
* UserInterface/Views/InlineSwatch.js:
(WI.InlineSwatch.prototype._swatchElementClicked):
Change CodeMirror readOnly from "nocursor" to true. The former prevents the editor from
being focused during selection, therefore preventing the content from being copied.
2017-08-17 Matt Baker <mattbaker@apple.com>
Web Inspector: create better icon for Canvas Path navigation item
https://bugs.webkit.org/show_bug.cgi?id=175274
Reviewed by Joseph Pecoraro.
* UserInterface/Images/Path.svg: Added.
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
2017-08-17 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: replace "Enter Class Name" with "Add New Class"
https://bugs.webkit.org/show_bug.cgi?id=175686
Reviewed by Matt Baker.
"Enter Class Name" isn't very descriptive. It doesn't suggest what's going to happen after you enter a class name.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
(WI.CSSStyleDetailsSidebarPanel.prototype.initialLayout):
2017-08-17 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Ensure three.js gets minified properly for production builds.
https://bugs.webkit.org/show_bug.cgi?id=175452
Reviewed by Brian Burg.
* Scripts/copy-user-interface-resources.pl:
2017-08-14 Simon Fraser <simon.fraser@apple.com>
Remove Proximity Events and related code
https://bugs.webkit.org/show_bug.cgi?id=175545
Reviewed by Daniel Bates.
No platform enables Proximity Events, so remove code inside ENABLE(PROXIMITY_EVENTS)
and other related code.
* UserInterface/Models/ScriptTimelineRecord.js:
(WI.ScriptTimelineRecord.EventType.displayName):
2017-08-14 Matt Baker <mattbaker@apple.com>
Web Inspector: Remove text-shadow and gradient backgrounds
https://bugs.webkit.org/show_bug.cgi?id=175430
Reviewed by Brian Burg.
Inspector should more closely match flat system look. Remove text-shadow
embossing and replace linear gradients in popover backgrounds and selected
tree item background color.
* UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
(.sidebar > .panel.details.css-style > .content > .pseudo-classes > .group > label):
* UserInterface/Views/CompletionSuggestionsView.css:
(.completion-suggestions-container:not(:active) > .item.selected,):
* UserInterface/Views/DebuggerDashboardView.css:
(.toolbar .dashboard.debugger):
* UserInterface/Views/HierarchicalPathComponent.css:
(.hierarchical-path-component > .title):
* UserInterface/Views/Main.css:
(.bouncy-highlight):
* UserInterface/Views/NavigationSidebarPanel.css:
(.sidebar > .panel.navigation > .content .empty-content-placeholder > .message):
* UserInterface/Views/Popover.js:
(WI.Popover.prototype._drawBackground):
* UserInterface/Views/RecordingTraceDetailsSidebarPanel.css:
(.sidebar > .details.recording-trace > .content > .no-trace-data > .message):
* UserInterface/Views/RulesStyleDetailsPanel.css:
(.sidebar > .panel.details.css-style .rules .label):
(.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules.filter-non-matching > .no-filter-results > .no-filter-results-message):
(@media (-webkit-min-device-pixel-ratio: 2)): Deleted.
(.sidebar > .panel.details.css-style > .content.filter-in-progress > .rules .label.filter-matching-label,): Deleted.
* UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.css:
(.style-spreadsheet .inherited):
* UserInterface/Views/TimelineDataGrid.css:
(.tree-outline.timeline-data-grid .item:hover):
* UserInterface/Views/TimelineDataGrid.js:
(WI.TimelineDataGrid.prototype._createPopoverContent):
* UserInterface/Views/Variables.css:
(:root):
2017-08-11 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Clicking on suggestion hint should apply it, not dismiss
https://bugs.webkit.org/show_bug.cgi?id=175409
Reviewed by Matt Baker.
Make clicking on the suggestion hint apply the completion, and place the text caret after it.
* UserInterface/Controllers/CodeMirrorCompletionController.js:
(WI.CodeMirrorCompletionController.prototype._createCompletionHintMarker):
2017-08-11 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Update the filter icon to match Xcode
https://bugs.webkit.org/show_bug.cgi?id=175458
<rdar://problem/33838660>
Reviewed by Matt Baker.
* UserInterface/Images/FilterFieldGlyph.svg:
Half-pixel transform is necessary for a cleaner rasterisation.
* UserInterface/Views/FilterBar.css:
(.filter-bar > input[type="search"]::-webkit-search-decoration):
(.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
::-webkit-search-decoration is a flexbox item. Remove `vertical-align: bottom`,
since it didn't do anything for it.
* UserInterface/Views/DOMNodeDetailsSidebarPanel.css:
* UserInterface/Views/FilterBar.js:
(WI.FilterBar):
* UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
(WI.CSSStyleDetailsSidebarPanel.prototype.initialLayout):
* UserInterface/Views/DebuggerSidebarPanel.js:
* UserInterface/Views/LogContentView.js:
(WI.LogContentView):
* UserInterface/Views/NetworkSidebarPanel.js:
(WI.NetworkSidebarPanel):
* UserInterface/Views/RecordingNavigationSidebarPanel.js:
(WI.RecordingNavigationSidebarPanel):
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel):
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel):
* UserInterface/Views/StorageSidebarPanel.js:
(WI.StorageSidebarPanel):
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
* Localizations/en.lproj/localizedStrings.js:
Replace placeholder text for all filter fields with "Filter".
2017-08-10 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Add three.js in preparation for layer visualization.
https://bugs.webkit.org/show_bug.cgi?id=174798
Reviewed by Brian Burg.
* UserInterface/External/three.js/LICENSE: Added.
* UserInterface/External/three.js/OrbitControls.js: Added.
* UserInterface/External/three.js/three.js: Added.
2017-08-09 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Add pre-populated data to spreadsheet-style view
https://bugs.webkit.org/show_bug.cgi?id=174838
<rdar://problem/33523220>
Reviewed by Matt Baker.
This patch adds static content to the experimental RulesStyleSpreadsheetDetailsPanel.
The static content will be replaced with actual data in the follow up patches.
* UserInterface/Main.html:
* UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.css: Added.
(.style-spreadsheet .style-rule):
(.style-spreadsheet .selector-line):
(.style-spreadsheet .selector):
(.style-spreadsheet :matches(.selector .matched, .selector:focus)):
(.style-spreadsheet .name):
(.style-spreadsheet .value):
(.style-spreadsheet :matches(.selector, .name, .value)):
(.style-spreadsheet :matches(.selector, .name, .value):focus):
(.style-spreadsheet .selector-inline):
(.style-spreadsheet .property):
(.style-spreadsheet .property-disabled,):
(.style-spreadsheet .property-disabled :matches(.name, .value)):
(.style-spreadsheet .styles-source):
(.style-spreadsheet :matches(a, .node-link)):
(.style-spreadsheet :matches(a, .node-link):hover):
(.style-spreadsheet .inherited):
(.style-spreadsheet .declarations):
(.style-spreadsheet input[type="checkbox"]):
(.style-spreadsheet input[type="checkbox"]:not(:checked)):
(.style-spreadsheet .declarations:hover input[type="checkbox"]):
* UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.js:
2017-08-08 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: support editing WebGL shaders
https://bugs.webkit.org/show_bug.cgi?id=124211
<rdar://problem/15448958>
Reviewed by Matt Baker.
* UserInterface/Models/ShaderProgram.js:
(WI.ShaderProgram.prototype.updateVertexShader):
(WI.ShaderProgram.prototype.updateFragmentShader):
(WI.ShaderProgram.prototype._updateShader):
* UserInterface/Views/ShaderProgramContentView.js:
(WI.ShaderProgramContentView):
(WI.ShaderProgramContentView.prototype._contentDidChange):
2017-08-07 Devin Rousso <drousso@apple.com>
Web Inspector: Preview Canvas path when viewing a recording
https://bugs.webkit.org/show_bug.cgi?id=174967
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.supportsCanvasPathDebugging):
(WI.RecordingContentView.prototype.get navigationItems):
(WI.RecordingContentView.prototype.shown):
(WI.RecordingContentView.prototype._generateContentCanvas2D):
(WI.RecordingContentView.prototype._actionModifiesPath):
(WI.RecordingContentView.prototype._updateCanvasPath):
(WI.RecordingContentView.prototype._showPathButtonClicked):
Show each segment of the current path as an overlay when the setting is enabled.
Drive-by: fix forgotten function rename.
* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording canvas.path):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
Show the currentX/currentY in the current state.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.isFunctionForType):
(WI.RecordingAction.prototype.swizzle):
Use Sets for better performance.
2017-08-04 Devin Rousso <drousso@apple.com>
Web Inspector: add source view for WebGL shader programs
https://bugs.webkit.org/show_bug.cgi?id=138593
<rdar://problem/18936194>
Reviewed by Matt Baker.
Shader programs are now listed in the Resources sidebar as items within the owner Canvas
context. When selected, the shown content view has two editors, one for the Vertex shader
and one for the Fragment shader. These editors use CodeMirror's "clike" mode for GLSL syntax.
* Localizations/en.lproj/localizedStrings.js:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
* UserInterface/Main.html:
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager):
(WI.CanvasManager.prototype.canvasRemoved):
(WI.CanvasManager.prototype.programCreated):
(WI.CanvasManager.prototype.programDeleted):
(WI.CanvasManager.prototype._mainResourceDidChange):
* UserInterface/Models/Collection.js:
* UserInterface/Models/Canvas.js:
(WI.Canvas.prototype.get shaderProgramCollection)
* UserInterface/Models/ShaderProgram.js:
(WI.ShaderProgram.prototype.requestVertexShaderSource):
(WI.ShaderProgram.prototype.requestFragmentShaderSource):
(WI.ShaderProgram.prototype._requestShaderSource):
* UserInterface/Views/CanvasTreeElement.js:
(WI.CanvasTreeElement):
(WI.CanvasTreeElement.prototype.onattach):
(WI.CanvasTreeElement.prototype.ondetach):
(WI.CanvasTreeElement.prototype.onpopulate):
(WI.CanvasTreeElement.prototype._shaderProgramAdded):
(WI.CanvasTreeElement.prototype._shaderProgramRemoved):
* UserInterface/Views/ShaderProgramTreeElement.js: Added.
(WI.ShaderProgramTreeElement):
* UserInterface/Views/ShaderProgramContentView.js: Added.
(WI.ShaderProgramContentView):
(WI.ShaderProgramContentView.prototype.shown):
(WI.ShaderProgramContentView.prototype.hidden):
(WI.ShaderProgramContentView.prototype.closed):
(WI.ShaderProgramContentView.prototype.get supportsSave):
(WI.ShaderProgramContentView.prototype.get saveData):
(WI.ShaderProgramContentView.prototype.get supportsSearch):
(WI.ShaderProgramContentView.prototype.get numberOfSearchResults):
(WI.ShaderProgramContentView.prototype.get hasPerformedSearch):
(WI.ShaderProgramContentView.prototype.set automaticallyRevealFirstSearchResult):
(WI.ShaderProgramContentView.prototype.performSearch):
(WI.ShaderProgramContentView.prototype.searchCleared):
(WI.ShaderProgramContentView.prototype.searchQueryWithSelection):
(WI.ShaderProgramContentView.prototype.revealPreviousSearchResult):
(WI.ShaderProgramContentView.prototype.revealNextSearchResult):
(WI.ShaderProgramContentView.prototype.revealPosition):
(WI.ShaderProgramContentView.prototype._editorFocused):
(WI.ShaderProgramContentView.prototype._numberOfSearchResultsDidChange):
* UserInterface/Views/ShaderProgramContentView.css: Added.
(.content-view.shader-program > .text-editor.shader):
(body[dir=ltr] .content-view.shader-program > .text-editor.shader.vertex,):
(body[dir=ltr] .content-view.shader-program > .text-editor.shader.fragment,):
(body[dir=ltr] .content-view.shader-program > .text-editor.shader + .text-editor.shader):
(body[dir=rtl] .content-view.shader-program > .text-editor.shader + .text-editor.shader):
(.content-view.shader-program > .text-editor.shader > .type-title):
(.content-view.shader-program > .text-editor.shader > .CodeMirror):
* UserInterface/Images/DocumentGL.png: Added.
* UserInterface/Images/DocumentGL@2x.png: Added.
* UserInterface/Views/ResourceIcons.css:
(.shader-program .icon):
* UserInterface/Base/Main.js:
* UserInterface/Views/ContentView.js:
(WI.ContentView.createFromRepresentedObject):
(WI.ContentView.isViewable):
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
(WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
(WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/ResourcesTabContentView.js:
(WI.ResourcesTabContentView.prototype.canShowRepresentedObject):
Plumbing for displaying ShaderProgram content.
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor):
(WebInspector.TextEditor.prototype._editorFocused):
* Scripts/update-codemirror-resources.rb:
* UserInterface/External/CodeMirror/clike.js: Added.
Add C-like mode for highlighting GLSL.
2017-08-03 Joseph Pecoraro <pecoraro@apple.com>
JSContext Inspector: Scripts sometimes do not show in resources tab
https://bugs.webkit.org/show_bug.cgi?id=175153
<rdar://problem/33708683>
Reviewed by Matt Baker.
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype.initialLayout):
When the ResourceSidebar is lazily created, be sure to add any scripts
to the sidebar that are not backed by Resources.
(WI.ResourceSidebarPanel.prototype._scriptWasAdded):
(WI.ResourceSidebarPanel.prototype._addScript):
Extract so it can be used outside of an event handler.
2017-08-03 Devin Rousso <drousso@apple.com>
Web Inspector: add button to open Inspector^2
https://bugs.webkit.org/show_bug.cgi?id=175108
Reviewed by Brian Burg.
* UserInterface/Debug/Bootstrap.js:
(updateDebugUI):
(WI.runBootstrapOperations):
* UserInterface/Views/ButtonToolbarItem.js:
(WI.ButtonToolbarItem):
(WI.ButtonToolbarItem.prototype.get label): Deleted.
(WI.ButtonToolbarItem.prototype.set label): Deleted.
* UserInterface/Views/ButtonToolbarItem.css:
(.toolbar .item.button):
(.toolbar .item.button:not(.disabled):active):
(.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated)):
(.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated)):
(.toolbar .item.button > .glyph):
(.toolbar .item.button:not(.disabled):active > .glyph): Deleted.
(.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated) > .glyph): Deleted.
(.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated) > .glyph): Deleted.
(.toolbar .item.button > .label): Deleted.
* UserInterface/Views/ActivateButtonToolbarItem.js:
(WI.ActivateButtonToolbarItem):
(WI.ActivateButtonToolbarItem.prototype.get label): Deleted.
(WI.ActivateButtonToolbarItem.prototype.set label): Deleted.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
Remove unused `label` parameter from Toolbar objects.
2017-08-03 Matt Baker <mattbaker@apple.com>
Web Inspector: Instrument WebGLProgram created/deleted
https://bugs.webkit.org/show_bug.cgi?id=175059
Reviewed by Devin Rousso.
This patch adds frontend support for shader program instrumentation.
The frontend creates a ShaderProgram model object for each WebGLProgram.
Since only canvases with a WebGL context have programs, the Canvas model
object does not contain any logic specific to programs. CanvasManager
dispatches program added/removed events, and the parent Canvas can be
accessed from ShaderProgram but not the other way around.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager):
(WI.CanvasManager.prototype.get shaderPrograms):
(WI.CanvasManager.prototype.canvasRemoved):
(WI.CanvasManager.prototype.programCreated):
(WI.CanvasManager.prototype.programDeleted):
(WI.CanvasManager.prototype._mainResourceDidChange):
(WI.CanvasManager.prototype._dispatchShaderProgramRemoved):
* UserInterface/Main.html:
* UserInterface/Models/Canvas.js:
(WI.Canvas.prototype.nextShaderProgramDisplayNumber):
(WI.Canvas):
* UserInterface/Models/ShaderProgram.js: Added.
(WI.ShaderProgram):
(WI.ShaderProgram.prototype.get identifier):
(WI.ShaderProgram.prototype.get canvas):
(WI.ShaderProgram.prototype.get displayName):
* UserInterface/Protocol/CanvasObserver.js:
(WI.CanvasObserver.prototype.programCreated):
(WI.CanvasObserver.prototype.programDeleted):
(WI.CanvasObserver):
* UserInterface/Test.html:
2017-08-03 Joseph Pecoraro <pecoraro@apple.com>
JSContext Inspector: Recording tab should not be available in New Tab picker
https://bugs.webkit.org/show_bug.cgi?id=175155
Reviewed by Brian Burg.
* UserInterface/Views/RecordingTabContentView.js:
(WI.RecordingTabContentView.isTabAllowed):
Only allow the Recording Tab if we have a CanvasAgent.
2017-08-02 Devin Rousso <drousso@apple.com>
Web Inspector: add stack trace information for each RecordingAction
https://bugs.webkit.org/show_bug.cgi?id=174663
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Models/Recording.js:
(WI.Recording.prototype.swizzle):
Add Array type for swizzling array values.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.fromPayload):
(WI.RecordingAction.prototype.get trace):
(WI.RecordingAction.prototype.swizzle):
(WI.RecordingAction.prototype.toJSON):
* UserInterface/Views/RecordingTraceDetailsSidebarPanel.js: Added.
(WI.RecordingTraceDetailsSidebarPanel):
(WI.RecordingTraceDetailsSidebarPanel.disallowInstanceForClass):
(WI.RecordingTraceDetailsSidebarPanel.prototype.inspect):
(WI.RecordingTraceDetailsSidebarPanel.prototype.set recording):
(WI.RecordingTraceDetailsSidebarPanel.prototype.updateActionIndex):
* UserInterface/Views/RecordingTraceDetailsSidebarPanel.css: Added.
(.sidebar > .panel.details.recording-trace > .content > .call-frame):
(.sidebar > .details.recording-trace > .content > .no-trace-data):
(.sidebar > .details.recording-trace > .content > .no-trace-data > .message):
* UserInterface/Views/RecordingTabContentView.js:
(WI.RecordingTabContentView):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement.prototype.populateContextMenu):
* UserInterface/Views/CallFrameView.css:
(.call-frame):
(body[dir=ltr] .call-frame .icon):
(body[dir=rtl] .call-frame .icon):
Apply the same trailing margin for CallFrameView icons as TreeElement.
2017-08-02 Devin Rousso <drousso@apple.com>
Web Inspector: add TreeElement virtualization for the Recording tab
https://bugs.webkit.org/show_bug.cgi?id=174968
Reviewed by Joseph Pecoraro.
* UserInterface/Views/RecordingNavigationSidebarPanel.js:
(WI.RecordingNavigationSidebarPanel):
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.get virtualized):
(WI.TreeOutline.prototype.registerScrollVirtualizer):
(WI.TreeOutline.prototype.updateVirtualizedElements.walk):
(WI.TreeOutline.prototype.updateVirtualizedElements):
Add spacer elements before and after the TreeOutline element that will size to ensure that
the TreeOutline node still takes up the same amount of space after some of the TreeElements
are removed. Whenever the scroll of the container view changes, recalculate the visible area
and add/remove TreeElements based on whether they would be in that. This is only possible if
every TreeElement has the same vertical height, which is given when setting up the scroll
listener on the container view.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.set hidden):
(WI.TreeElement.prototype._attach):
(WI.TreeElement.prototype.collapse):
(WI.TreeElement.prototype.expand):
(WI.TreeElement.prototype.reveal):
If the TreeOutline is being virtualized, don't add each TreeElement's node to the DOM. They
will be added at the end of the frame (via setTimeout) if they are within the visible + padding
area of the TreeOutline.
2017-08-01 Devin Rousso <drousso@apple.com>
Web Inspector: simplify WebInspector with WI
https://bugs.webkit.org/show_bug.cgi?id=175058
Reviewed by Joseph Pecoraro.
* .eslintrc:
* Tools/PrettyPrinting/FormatterDebug.js:
* Tools/PrettyPrinting/index.html:
* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Base/*.js:
* UserInterface/Controllers/*.js:
* UserInterface/Debug/*.js:
* UserInterface/Models/*.js:
* UserInterface/Protocol/*.js:
* UserInterface/Proxies/*.js:
* UserInterface/Test/*.js:
* UserInterface/Views/*.js:
2017-08-01 Devin Rousso <drousso@apple.com>
Web Inspector: create Recording tab for displaying recordings
https://bugs.webkit.org/show_bug.cgi?id=174484
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Controllers/CanvasManager.js:
(WebInspector.CanvasManager.prototype.recordingFinished):
* UserInterface/Models/Canvas.js:
(WebInspector.Canvas.prototype.toggleRecording):
* UserInterface/Models/Recording.js:
(WebInspector.Recording):
(WebInspector.Recording.synthesizeError):
(WebInspector.Recording.prototype.get actions):
(WebInspector.Recording.prototype.get source):
(WebInspector.Recording.prototype.set source):
(WebInspector.Recording.prototype.swizzle):
* UserInterface/Models/RecordingAction.js:
(WebInspector.RecordingAction):
(WebInspector.RecordingAction.isFunctionForType):
(WebInspector.RecordingAction.get name):
(WebInspector.RecordingAction.get parameters):
(WebInspector.RecordingAction.prototype.get valid):
(WebInspector.RecordingAction.prototype.set valid):
(WebInspector.RecordingAction.get isFunction):
(WebInspector.RecordingAction.get isGetter):
(WebInspector.RecordingAction.get isVisual):
(WebInspector.RecordingAction.get stateModifiers):
(WebInspector.RecordingAction.prototype.swizzle):
(WebInspector.RecordingAction.prototype.parameterSwizzleTypeForTypeAtIndex):
* UserInterface/Models/RecordingInitialStateAction.js: Added.
(WebInspector.RecordingInitialStateAction):
* UserInterface/Views/RecordingTabContentView.js: Added.
(WebInspector.RecordingTabContentView):
(WebInspector.RecordingTabContentView.tabInfo):
(WebInspector.RecordingTabContentView.prototype.get type):
(WebInspector.RecordingTabContentView.prototype.canShowRepresentedObject):
(WebInspector.RecordingTabContentView.prototype.showRepresentedObject):
(WebInspector.RecordingTabContentView.prototype.restoreStateFromCookie):
(WebInspector.RecordingTabContentView.prototype.saveStateToCookie):
(WebInspector.RecordingTabContentView.prototype.closed):
(WebInspector.RecordingTabContentView.prototype._updateActionIndex):
(WebInspector.RecordingTabContentView.prototype._scrubberNavigationItemValueChanged):
(WebInspector.RecordingTabContentView.prototype._navigationSidebarImport):
(WebInspector.RecordingTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged):
* UserInterface/Views/RecordingContentView.js: Added.
(WebInspector.RecordingContentView):
(WebInspector.RecordingContentView.prototype.get navigationItems):
(WebInspector.RecordingContentView.prototype.updateActionIndex):
(WebInspector.RecordingContentView.prototype.shown):
(WebInspector.RecordingContentView.prototype.get supplementalRepresentedObjects):
(WebInspector.RecordingContentView.prototype._generateContentCanvas2D):
(WebInspector.RecordingContentView.prototype._applyAction):
(WebInspector.RecordingContentView.prototype._updateImageGrid):
(WebInspector.RecordingContentView.prototype._showGridButtonClicked):
* UserInterface/Views/RecordingContentView.css: Copied from Source/WebInspectorUI/UserInterface/Views/CanvasContentView.css.
(.content-view:not(.tab).recording):
(.content-view:not(.tab).recording > .preview-container):
(.content-view:not(.tab).recording canvas):
* UserInterface/Views/RecordingNavigationSidebarPanel.js: Added.
(WebInspector.RecordingNavigationSidebarPanel):
(WebInspector.RecordingNavigationSidebarPanel.disallowInstanceForClass):
(WebInspector.RecordingNavigationSidebarPanel.prototype.set recording):
(WebInspector.RecordingNavigationSidebarPanel.prototype.updateActionIndex):
(WebInspector.RecordingNavigationSidebarPanel.prototype.initialLayout):
(WebInspector.RecordingNavigationSidebarPanel.prototype._importNavigationItemClicked):
(WebInspector.RecordingNavigationSidebarPanel.prototype._exportNavigationItemClicked):
* UserInterface/Views/RecordingNavigationSidebarPanel.css: Added.
(.sidebar > .panel.navigation.recording > :matches(.content, .empty-content-placeholder)):
(.sidebar > .panel.navigation.recording > .content > .tree-outline):
(.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action, .selected).expanded):
(.sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before):
(body[dir=ltr] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before):
(body[dir=rtl] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before):
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="2"] .item.action:not(.initial-state)::before):
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="3"] .item.action:not(.initial-state)::before):
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="4"] .item.action:not(.initial-state)::before):
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="5"] .item.action:not(.initial-state)::before):
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="6"] .item.action:not(.initial-state)::before):
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="7"] .item.action:not(.initial-state)::before):
(.sidebar > .panel.navigation.recording > .content .action > .icon):
(.sidebar > .panel.navigation.recording > .content .action.function > .icon):
(.sidebar > .panel.navigation.recording > .content .action.attribute.getter > .icon):
(.sidebar > .panel.navigation.recording > .content .tree-outline:matches(:focus, .force-focus) .action.attribute.getter.selected > .icon):
(.sidebar > .panel.navigation.recording > .content .action.attribute.boolean > .icon):
(.sidebar > .panel.navigation.recording > .content .action.attribute.number > .icon):
(.sidebar > .panel.navigation.recording > .content .action.attribute.object > .icon):
(.sidebar > .panel.navigation.recording > .content .action.attribute.string > .icon):
(.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action) > .icon):
(.sidebar > .panel.navigation.recording > .content .action:matches(.invalid, .missing) > .icon):
(body[dir=ltr] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon):
(body[dir=rtl] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon):
(.sidebar > .panel.navigation.recording > .content .action.visual:not(.selected, .invalid)):
(.sidebar > .panel.navigation.recording > .content .action:not(.selected, .initial-state) > .titles .parameter.swizzled):
(.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles .name,):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js: Added.
(WebInspector.RecordingStateDetailsSidebarPanel):
(WebInspector.RecordingStateDetailsSidebarPanel.disallowInstanceForClass):
(WebInspector.RecordingStateDetailsSidebarPanel.prototype.inspect):
(WebInspector.RecordingStateDetailsSidebarPanel.prototype.set recording):
(WebInspector.RecordingStateDetailsSidebarPanel.prototype.updateActionIndex):
(WebInspector.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.css: Added.
(.sidebar > .panel.details.recording-state > .content > .data-grid):
(.sidebar > .panel.details.recording-state > .content > .data-grid tr.modified):
(.sidebar > .panel.details.recording-state > .content > .data-grid tr:not(.selected).non-standard):
(.sidebar > .panel.details.recording-state > .content > .data-grid tr:not(.selected) .unavailable):
* UserInterface/Views/RecordingActionTreeElement.js: Added.
(WebInspector.RecordingActionTreeElement):
(WebInspector.RecordingActionTreeElement._generateDOM):
(WebInspector.RecordingActionTreeElement.prototype.get index):
(WebInspector.RecordingActionTreeElement.get filterableData):
(WebInspector.RecordingActionTreeElement.prototype.get filterableData):
(WebInspector.RecordingActionTreeElement.prototype.onattach):
(WebInspector.RecordingActionTreeElement.prototype.populateContextMenu):
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
(WebInspector.instanceForClass):
* UserInterface/Base/FileUtilites.js: Added.
(WebInspector.saveDataToFile): Moved from UserInterface/Base/Main.js
(WebInspector.loadDataFromFile):
* UserInterface/Views/ButtonNavigationItem.js:
(WebInspector.ButtonNavigationItem.prototype._mouseClicked):
Send the native event as part of the data.
* UserInterface/Views/CanvasContentView.js:
(WebInspector.CanvasContentView):
(WebInspector.CanvasContentView.prototype.get navigationItems):
(WebInspector.CanvasContentView.prototype.initialLayout):
(WebInspector.CanvasContentView.prototype.closed):
(WebInspector.CanvasContentView.prototype._toggleRecording):
(WebInspector.CanvasContentView.prototype._recordingFinished):
* UserInterface/Views/CanvasContentView.css:
(.content-view.canvas):
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WebInspector.CanvasDetailsSidebarPanel.prototype.inspect):
* UserInterface/Views/ContentBrowser.js:
(WebInspector.ContentBrowser):
(WebInspector.ContentBrowser.prototype._updateContentViewNavigationItems):
* UserInterface/Views/ContentBrowserTabContentView.js:
(WebInspector.ContentBrowserTabContentView):
* UserInterface/Views/ContentView.js:
(WebInspector.ContentView.createFromRepresentedObject):
(WebInspector.ContentView.isViewable):
* UserInterface/Views/ScrubberNavigationItem.js: Added.
(WebInspector.ScrubberNavigationItem):
(WebInspector.ScrubberNavigationItem.prototype.get value):
(WebInspector.ScrubberNavigationItem.prototype.set value):
(WebInspector.ScrubberNavigationItem.prototype.get min):
(WebInspector.ScrubberNavigationItem.prototype.set min):
(WebInspector.ScrubberNavigationItem.prototype.get max):
(WebInspector.ScrubberNavigationItem.prototype.set max):
(WebInspector.ScrubberNavigationItem.prototype.set disabled):
(WebInspector.ScrubberNavigationItem.prototype.get additionalClassNames):
(WebInspector.ScrubberNavigationItem.prototype._sliderChanged):
* UserInterface/Views/ScrubberNavigationItem.css: Added.
(.navigation-bar .item.scrubber):
(.navigation-bar .item.scrubber > input):
(.navigation-bar .item.scrubber > input[disabled]):
Allow the flexible space to be replaced with a navigation item at construction.
* UserInterface/Views/DataGridNode.js:
(WebInspector.DataGridNode):
(WebInspector.DataGridNode.prototype.get element):
Allow a list of CSS classes to be added to the node's element.
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype.initialLayout):
(WebInspector.SettingsTabContentView.prototype._createExperimentalSettingsView.listenForChange):
(WebInspector.SettingsTabContentView.prototype._createExperimentalSettingsView):
(WebInspector.SettingsTabContentView.prototype._createDebugSettingsView):
Move experimental settings to their own panel.
* UserInterface/Views/TabContentView.js:
(WebInspector.TabContentView.prototype.get navigationSidebarPanel):
Save the NavigationSidebarPanel after it's constructed.
* UserInterface/Base/Utilities.js:
(Number.countDigits):
* UserInterface/Images/Recording.svg: Added.
* UserInterface/Images/RenderingFrame.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/TimelineRecordRenderingFrame.svg.
* UserInterface/Images/gtk/RenderingFrame.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/gtk/TimelineRecordRenderingFrame.svg.
* UserInterface/Views/TimelineIcons.css:
(.rendering-frame-record .icon):
* UserInterface/Views/DOMTreeOutline.css:
(@keyframes node-state-changed):
* UserInterface/Views/Main.css:
(:matches(img, canvas).show-grid):
(img.show-grid): Deleted.
* UserInterface/Views/NavigationBar.css:
(.navigation-bar):
* UserInterface/Views/NetworkSidebarPanel.css:
(.sidebar > .panel.navigation.network.network-grid-content-view-showing > .content > .tree-outline):
* UserInterface/Views/TimelineTabContentView.css:
(.timeline.tab.content-view .navigation-bar > .item.radio):
* UserInterface/Views/TimelineView.css:
(.panel.navigation.timeline.timeline-recording-content-view-showing > .content > .tree-outline):
* UserInterface/Views/Variables.css:
(:root):
Create CSS variables for the DOM modification flash color and the color striping.
2017-07-28 Devin Rousso <drousso@apple.com>
Web Inspector: Cleanup unused/invalid parameters for TreeElements
https://bugs.webkit.org/show_bug.cgi?id=173987
Reviewed by Brian Burg.
* UserInterface/Views/TreeElement.js:
* UserInterface/Views/GeneralTreeElement.js:
* UserInterface/Views/ApplicationCacheFrameTreeElement.js:
* UserInterface/Views/BreakpointTreeElement.js:
* UserInterface/Views/CSSStyleSheetTreeElement.js:
* UserInterface/Views/CallFrameTreeElement.js:
* UserInterface/Views/ContentFlowTreeElement.js:
* UserInterface/Views/DOMNodeTreeElement.js:
* UserInterface/Views/DatabaseTableTreeElement.js:
* UserInterface/Views/DatabaseTreeElement.js:
* UserInterface/Views/FolderTreeElement.js:
* UserInterface/Views/FolderizedTreeElement.js:
* UserInterface/Views/FrameTreeElement.js:
* UserInterface/Views/IndexedDatabaseObjectStoreIndexTreeElement.js:
* UserInterface/Views/IndexedDatabaseObjectStoreTreeElement.js:
* UserInterface/Views/IndexedDatabaseTreeElement.js:
* UserInterface/Views/IssueTreeElement.js:
* UserInterface/Views/ObjectTreeBaseTreeElement.js:
* UserInterface/Views/ProfileNodeTreeElement.js:
* UserInterface/Views/ResourceTreeElement.js:
* UserInterface/Views/ScriptTreeElement.js:
* UserInterface/Views/SearchResultTreeElement.js:
* UserInterface/Views/SourceCodeTreeElement.js:
* UserInterface/Views/SourceMapResourceTreeElement.js:
* UserInterface/Views/StorageTreeElement.js:
* UserInterface/Views/TimelineRecordTreeElement.js:
* UserInterface/Views/TypeTreeElement.js:
2017-07-26 Devin Rousso <drousso@apple.com>
Uncaught Exception: undefined is not an object (evaluating 'this._memoryRow.value = Number.bytesToString(this._canvas.memoryCost)')
https://bugs.webkit.org/show_bug.cgi?id=174823
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshIdentitySection):
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshSourceSection):
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshAttributesSection):
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshCSSCanvasSection):
(WebInspector.CanvasDetailsSidebarPanel.prototype._formatMemoryRow):
Early return if the view has not called initialLayout, as the rows might not have been
constructed yet.
* UserInterface/Views/View.js:
(WebInspector.View.prototype.get didInitialLayout): Added.
2017-07-26 Devin Rousso <drousso@apple.com>
Web Inspector: create protocol for recording Canvas contexts
https://bugs.webkit.org/show_bug.cgi?id=174481
Reviewed by Joseph Pecoraro.
Create model objects that effectively mirror the protocol objects sent for Canvas recordings.
* .eslintrc:
* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Controllers/CanvasManager.js:
(WebInspector.CanvasManager.prototype.recordingFinished):
* UserInterface/Protocol/CanvasObserver.js:
(WebInspector.CanvasObserver.prototype.recordingFinished):
* UserInterface/Models/Recording.js: Added.
(WebInspector.Recording):
(WebInspector.Recording.fromPayload):
(WebInspector.Recording.prototype.get type):
(WebInspector.Recording.prototype.get initialState):
(WebInspector.Recording.prototype.get frames):
(WebInspector.Recording.prototype.get data):
(WebInspector.Recording.prototype.toJSON):
* UserInterface/Models/RecordingAction.js: Added.
(WebInspector.RecordingAction):
(WebInspector.RecordingAction.fromPayload):
(WebInspector.RecordingAction.prototype.get name):
(WebInspector.RecordingAction.prototype.get parameters):
(WebInspector.RecordingAction.prototype.toJSON):
* UserInterface/Models/RecordingFrame.js: Added.
(WebInspector.RecordingFrame):
(WebInspector.RecordingFrame.fromPayload):
(WebInspector.RecordingFrame.prototype.get actions):
(WebInspector.RecordingFrame.prototype.get incomplete):
(WebInspector.RecordingFrame.prototype.toJSON):
2017-07-26 Brian Burg <bburg@apple.com>
Remove WEB_TIMING feature flag
https://bugs.webkit.org/show_bug.cgi?id=174795
Reviewed by Alex Christensen.
Remove fallback for ports that lack WEB_TIMING.
* UserInterface/Base/Utilities.js:
(timestamp): Deleted.
* UserInterface/Protocol/Connection.js:
(InspectorBackend.Connection.prototype._dispatchResponse):
(InspectorBackend.Connection.prototype._dispatchEvent):
(InspectorBackend.Connection.prototype._sendCommandToBackendWithCallback):
(InspectorBackend.Connection.prototype._sendCommandToBackendExpectingPromise):
* UserInterface/Protocol/MessageDispatcher.js:
(WebInspector.dispatchNextQueuedMessageFromBackend):
2017-07-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Don't output "No message" for multi-value logs like console.log(x, y)
https://bugs.webkit.org/show_bug.cgi?id=174842
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
Removed "No message".
* UserInterface/Views/ConsoleMessageView.js:
(WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
Track whether or not outputting the next parameter will need a divider
in front of it or not.
2017-07-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Fix warnings about console.assert lines without semicolons
https://bugs.webkit.org/show_bug.cgi?id=174840
Reviewed by Brian Burg.
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype.set selectedSettingsView):
(WebInspector.SettingsTabContentView.prototype.setSettingsViewVisible):
Add semicolon to assert lines so they can be stripped in optimized builds.
2017-07-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Inline multiple console log values if they are simple
https://bugs.webkit.org/show_bug.cgi?id=174746
<rdar://problem/33469376>
Reviewed by Matt Baker.
* UserInterface/Models/IssueMessage.js:
* UserInterface/Protocol/RemoteObject.js:
(WebInspector.RemoteObject.type): Deleted.
Remove this as it isn't as useful as directly checking the type.
* UserInterface/Views/ConsoleMessageView.js:
(WebInspector.ConsoleMessageView.prototype._appendExtraParameters):
(WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
(WebInspector.ConsoleMessageView.prototype._hasSimpleDisplay):
(WebInspector.ConsoleMessageView.prototype._isStackTrace):
For leading primitive/simple values, display them inline on the console message.
* UserInterface/Views/FormattedValue.js:
(WebInspector.FormattedValue.hasSimpleDisplay):
Provide a helper to determine if a formatted value will be simple.
2017-07-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Add a switch for Spreadsheet model style editor to experimental settings
https://bugs.webkit.org/show_bug.cgi?id=174741
<rdar://problem/33467954>
Reviewed by Brian Burg.
Show a blank panel when Spreadsheet Style Editor is enabled.
* UserInterface/Base/Setting.js:
* UserInterface/Main.html:
* UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
(WebInspector.CSSStyleDetailsSidebarPanel):
(WebInspector.CSSStyleDetailsSidebarPanel.prototype.computedStyleDetailsPanelShowProperty):
* UserInterface/Views/RulesStyleSpreadsheetDetailsPanel.js: Added.
(WebInspector.RulesStyleSpreadsheetDetailsPanel):
(WebInspector.RulesStyleSpreadsheetDetailsPanel.prototype.filterDidChange):
(WebInspector.RulesStyleSpreadsheetDetailsPanel.prototype.scrollToSectionAndHighlightProperty):
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings > .settings-view > .container.hidden):
(.content-view.settings > .settings-view > .container-centered):
(.content-view.settings > .settings-view > .container button):
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype._createDebugSettingsView):
* UserInterface/Views/SettingsView.js:
(WebInspector.SettingsView.prototype.addCenteredContainer):
(WebInspector.SettingsView):
Show "Reload Web Inspector" button when Spreadsheet Style Editor setting is modified.
2017-07-25 Devin Rousso <drousso@apple.com>
Web Inspector: add context menu item for taking a screenshot of a node
https://bugs.webkit.org/show_bug.cgi?id=174754
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/ContextMenuUtilities.js:
(WebInspector.appendContextMenuItemsForDOMNode):
Add "Capture Element Screenshot " context menu item that opens a save dialog with a picture of the node.
* UserInterface/Base/Main.js:
(WebInspector.saveDataToFile):
Allow the saveData to specify whether the contained content is base64Encoded, instead of
having to go through a Blob to save base64 data.
* UserInterface/Base/Utilities.js:
Add Number.pad to add leading zeros up to a certain width.
Drive-by: fix failing test for Number.constrain.
* UserInterface/Models/DOMNode.js:
(WebInspector.DOMNode.prototype.scrollIntoView.resolvedNode.scrollIntoView): Added.
(WebInspector.DOMNode.prototype.scrollIntoView.resolvedNode): Added.
(WebInspector.DOMNode.prototype.scrollIntoView): Added.
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
(WebInspector.DOMTreeElement.prototype._scrollIntoView.resolvedNode.scrollIntoView): Deleted.
(WebInspector.DOMTreeElement.prototype._scrollIntoView.resolvedNode): Deleted.
(WebInspector.DOMTreeElement.prototype._scrollIntoView): Deleted.
* UserInterface/Views/DOMTreeOutline.js:
(WebInspector.DOMTreeOutline.prototype.populateContextMenu):
Drive-by: move "Scroll Into View" context menu command to WebInspector.appendContextMenuItemsForDOMNode
so that it can be triggered from more places than just the DOM tree.
2017-07-24 Nikita Vasilyev <me@elv1s.ru>
Web Inspector: Settings: Some controls overlay settings header
https://bugs.webkit.org/show_bug.cgi?id=174804
Reviewed by Matt Baker.
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings .navigation-bar):
2017-07-24 Matt Baker <mattbaker@apple.com>
Web Inspector: should only show Canvases in resource type filter if debug setting enabled
https://bugs.webkit.org/show_bug.cgi?id=174765
<rdar://problem/33479009>
Reviewed by Devin Rousso.
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel):
2017-07-21 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: inspect(aFunction) should jump to function definition
https://bugs.webkit.org/show_bug.cgi?id=149344
<rdar://problem/11563607>
Reviewed by Matt Baker.
* UserInterface/Protocol/InspectorObserver.js:
(WebInspector.InspectorObserver.prototype.inspect):
If we receive a function remote object jump to its location if available.
2017-07-21 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Avoid subclassing WebInspector.Object if we do not need to
https://bugs.webkit.org/show_bug.cgi?id=174703
Reviewed by Brian Burg.
* UserInterface/Models/LogObject.js:
(WebInspector.LogObject):
(WebInspector.LogObject.prototype.get startDate): Deleted.
Remove unused startDate property as well.
* UserInterface/Base/YieldableTask.js:
* UserInterface/Debug/ProtocolTrace.js:
* UserInterface/Models/AnalyzerMessage.js:
* UserInterface/Models/ApplicationCacheFrame.js:
* UserInterface/Models/ApplicationCacheManifest.js:
* UserInterface/Models/BackForwardEntry.js:
* UserInterface/Models/Branch.js:
* UserInterface/Models/BreakpointAction.js:
* UserInterface/Models/CSSMedia.js:
* UserInterface/Models/CSSSelector.js:
* UserInterface/Models/CallFrame.js:
* UserInterface/Models/CallingContextTree.js:
* UserInterface/Models/CallingContextTreeNode.js:
* UserInterface/Models/CollectionEntry.js:
* UserInterface/Models/CollectionEntryPreview.js:
* UserInterface/Models/ConsoleMessage.js:
* UserInterface/Models/DOMSearchMatchObject.js:
* UserInterface/Models/DatabaseObject.js:
* UserInterface/Models/DatabaseTableObject.js:
* UserInterface/Models/DebuggerDashboard.js:
* UserInterface/Models/DebuggerData.js:
* UserInterface/Models/ExecutionContext.js:
* UserInterface/Models/ExecutionContextList.js:
* UserInterface/Models/GarbageCollection.js:
* UserInterface/Models/HeapSnapshotRootPath.js:
* UserInterface/Models/IndexedDatabase.js:
* UserInterface/Models/IndexedDatabaseObjectStore.js:
* UserInterface/Models/IndexedDatabaseObjectStoreIndex.js:
* UserInterface/Models/Instrument.js:
* UserInterface/Models/KeyboardShortcut.js:
* UserInterface/Models/LineWidget.js:
* UserInterface/Models/MemoryCategory.js:
* UserInterface/Models/MemoryPressureEvent.js:
* UserInterface/Models/ObjectPreview.js:
* UserInterface/Models/Probe.js:
* UserInterface/Models/ProbeSetDataFrame.js:
* UserInterface/Models/Profile.js:
* UserInterface/Models/ProfileNode.js:
* UserInterface/Models/ProfileNodeCall.js:
* UserInterface/Models/PropertyDescriptor.js:
* UserInterface/Models/PropertyPath.js:
* UserInterface/Models/PropertyPreview.js:
* UserInterface/Models/ResourceQueryMatch.js:
* UserInterface/Models/ResourceQueryResult.js:
* UserInterface/Models/ResourceTimingData.js:
* UserInterface/Models/Revision.js:
* UserInterface/Models/ScopeChainNode.js:
* UserInterface/Models/ScriptSyntaxTree.js:
* UserInterface/Models/SourceCodePosition.js:
* UserInterface/Models/SourceCodeSearchMatchObject.js:
* UserInterface/Models/SourceMap.js:
* UserInterface/Models/StackTrace.js:
* UserInterface/Models/StructureDescription.js:
* UserInterface/Models/TextMarker.js:
* UserInterface/Models/TextRange.js:
* UserInterface/Models/TimelineRange.js:
* UserInterface/Models/TypeDescription.js:
* UserInterface/Models/TypeSet.js:
* UserInterface/Protocol/ProtocolTracer.js:
* UserInterface/Proxies/FormatterWorkerProxy.js:
* UserInterface/Proxies/HeapSnapshotDiffProxy.js:
* UserInterface/Proxies/HeapSnapshotWorkerProxy.js:
* UserInterface/Test/TestSuite.js:
2017-07-19 Chris Dumez <cdumez@apple.com>
Drop SQLException type
https://bugs.webkit.org/show_bug.cgi?id=174665
Reviewed by Sam Weinig.
Use SQLError instead of SQLException, this is what the script should really
use here since it is checking the code of an SQLError.
* .eslintrc:
* UserInterface/Models/DatabaseObject.js:
(WebInspector.DatabaseObject.prototype.executeSQL.queryCallback):
(WebInspector.DatabaseObject.prototype.executeSQL):
(WebInspector.DatabaseObject):
2017-07-18 Andy Estes <aestes@apple.com>
[Xcode] Enable CLANG_WARN_RANGE_LOOP_ANALYSIS
https://bugs.webkit.org/show_bug.cgi?id=174631
Reviewed by Tim Horton.
* Configurations/Base.xcconfig:
2017-07-18 Andy Estes <aestes@apple.com>
[Xcode] Enable CLANG_WARN_OBJC_LITERAL_CONVERSION
https://bugs.webkit.org/show_bug.cgi?id=174631
Reviewed by Sam Weinig.
* Configurations/Base.xcconfig:
2017-07-18 Brian Burg <bburg@apple.com>
Web Inspector: adjust wording of "clear when page {navigates -> loads}"
https://bugs.webkit.org/show_bug.cgi?id=174589
<rdar://problem/32797981>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype._createGeneralSettingsView):
2017-07-18 Andy Estes <aestes@apple.com>
[Xcode] Enable CLANG_WARN_NON_LITERAL_NULL_CONVERSION
https://bugs.webkit.org/show_bug.cgi?id=174631
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
2017-07-18 Andy Estes <aestes@apple.com>
[Xcode] Enable CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING
https://bugs.webkit.org/show_bug.cgi?id=174631
Reviewed by Darin Adler.
* Configurations/Base.xcconfig:
2017-07-13 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused and untested Page domain commands
https://bugs.webkit.org/show_bug.cgi?id=174429
Reviewed by Timothy Hatcher.
* UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
* Versions/Inspector-iOS-10.0.json:
* Versions/Inspector-iOS-10.3.json:
* Versions/Inspector-iOS-11.0.json:
* Versions/Inspector-iOS-7.0.json:
* Versions/Inspector-iOS-8.0.json:
* Versions/Inspector-iOS-9.0.json:
* Versions/Inspector-iOS-9.3.json:
2017-07-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Correct a typo in the .eslintrc
https://bugs.webkit.org/show_bug.cgi?id=174389
Reviewed by Matt Baker.
* .eslintrc:
2017-07-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Node Sidebar - Improve wording for Potential Custom Element lacking a Custom definition
https://bugs.webkit.org/show_bug.cgi?id=174346
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._customElementState):
The text "Waiting to be upgraded" is poor. Any non-standard element with dashes
in the name is considered custom, but does not need to be upgraded. Lets use
different wording to indicate that it is detected as custom, and lacks a
specific Custom Element definition.
2017-07-10 Devin Rousso <drousso@apple.com>
Web Inspector: Highlight matching CSS canvas clients when hovering contexts in the Resources tab
https://bugs.webkit.org/show_bug.cgi?id=174279
Reviewed by Matt Baker.
* UserInterface/Controllers/DOMTreeManager.js:
(WebInspector.DOMTreeManager.prototype.highlightDOMNodeList):
(WebInspector.DOMTreeManager.prototype.highlightSelector):
* UserInterface/Views/CanvasTreeElement.js:
(WebInspector.CanvasTreeElement.prototype._handleMouseOver):
2017-07-03 Brian Burg <bburg@apple.com>
Web Replay: remove some unused code
https://bugs.webkit.org/show_bug.cgi?id=173903
Rubber-stamped by Joseph Pecoraro.
* .eslintrc:
* UserInterface/Base/Main.js:
(WebInspector.loaded):
* UserInterface/Controllers/DashboardManager.js:
(WebInspector.DashboardManager):
* UserInterface/Controllers/ReplayManager.js: Removed.
* UserInterface/Images/ReplayPauseButton.svg: Removed.
* UserInterface/Images/ReplayPlayButton.svg: Removed.
* UserInterface/Images/ReplayRecordingButton.svg: Removed.
* UserInterface/Images/gtk/ReplayPauseButton.svg: Removed.
* UserInterface/Images/gtk/ReplayPlayButton.svg: Removed.
* UserInterface/Images/gtk/ReplayRecordingButton.svg: Removed.
* UserInterface/Main.html:
* UserInterface/Models/ReplayDashboard.js: Removed.
* UserInterface/Models/ReplaySession.js: Removed.
* UserInterface/Models/ReplaySessionSegment.js: Removed.
* UserInterface/Protocol/ReplayObserver.js: Removed.
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WebInspector.loaded):
* UserInterface/Views/DashboardView.js:
(WebInspector.DashboardView.create):
* UserInterface/Views/ReplayDashboardView.css: Removed.
* UserInterface/Views/ReplayDashboardView.js: Removed.
* UserInterface/Views/TimelineRecordingContentView.js:
(WebInspector.TimelineRecordingContentView.prototype._debuggerPaused):
(WebInspector.TimelineRecordingContentView.prototype._debuggerResumed):
2017-07-07 Devin Rousso <drousso@apple.com>
Web Inspector: Resources are sometimes missing from the tree outline right before folderizing
https://bugs.webkit.org/show_bug.cgi?id=174277
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TreeElement.js:
(WebInspector.TreeElement.prototype.expand):
2017-07-07 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r217258): WebSocket resource tree elements don't show the connection status
https://bugs.webkit.org/show_bug.cgi?id=174274
Reviewed by Brian Burg.
* UserInterface/Views/FrameTreeElement.js:
(WebInspector.FrameTreeElement):
* UserInterface/Views/ResourceTreeElement.js:
(WebInspector.ResourceTreeElement.prototype.populateContextMenu):
* UserInterface/Views/WebSocketResourceTreeElement.js:
(WebInspector.WebSocketResourceTreeElement.prototype.populateContextMenu):
Move "Log WebSocket" context menu item to WebSocketResourceTreeElement.
2017-07-07 Devin Rousso <drousso@apple.com>
Web Inspector: Show all elements currently using a given CSS Canvas
https://bugs.webkit.org/show_bug.cgi?id=173965
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/CanvasManager.js:
(WebInspector.CanvasManager.prototype.cssCanvasClientNodesChanged):
* UserInterface/Models/Canvas.js:
(WebInspector.Canvas.prototype.requestCSSCanvasClientNodes):
(WebInspector.Canvas.prototype.cssCanvasClientNodesChanged):
* UserInterface/Protocol/CanvasObserver.js:
(WebInspector.CanvasObserver.prototype.cssCanvasClientNodesChanged):
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WebInspector.CanvasDetailsSidebarPanel):
(WebInspector.CanvasDetailsSidebarPanel.prototype.set canvas):
(WebInspector.CanvasDetailsSidebarPanel.prototype.initialLayout):
(WebInspector.CanvasDetailsSidebarPanel.prototype.layout):
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshCSSCanvasSection):
(WebInspector.CanvasDetailsSidebarPanel.prototype._formatMemoryRow):
Add CSS section for CSS canvases. Currently displays a list of node links, each of which is
using the selected canvas via -webkit-canvas.
* UserInterface/Main.html:
* UserInterface/Views/CanvasDetailsSidebarPanel.css: Added.
(.sidebar > .panel.details.canvas .details-section > .content .row.simple > .value > .node-link):
* UserInterface/Controllers/DOMTreeManager.js:
(WebInspector.DOMTreeManager.prototype.ensureDocument):
* UserInterface/Models/Canvas.js:
(WebInspector.Canvas.prototype.requestNode):
* UserInterface/Views/SearchSidebarPanel.js:
(WebInspector.SearchSidebarPanel.prototype.performSearch):
Add convenience function that will call DOMAgent.getDocument with an empty function. Should
be used when it is necessary that the document has been sent to the frontend, but the
document node itself is not needed.
2017-07-07 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Clean up some unnecessary constructors
https://bugs.webkit.org/show_bug.cgi?id=174236
Reviewed by Brian Burg.
* UserInterface/Controllers/CodeMirrorBezierEditingController.js:
* UserInterface/Controllers/CodeMirrorColorEditingController.js:
* UserInterface/Controllers/CodeMirrorGradientEditingController.js:
* UserInterface/Views/DividerNavigationItem.js:
* UserInterface/Views/FlexibleSpaceNavigationItem.js:
* UserInterface/Views/IdleTreeElement.js:
2017-07-06 Devin Rousso <drousso@apple.com>
Web Inspector: Highlight matching canvas element when hovering contexts in the Resources tab
https://bugs.webkit.org/show_bug.cgi?id=174209
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasTreeElement.js:
(WebInspector.CanvasTreeElement.prototype.onattach):
(WebInspector.CanvasTreeElement.prototype._handleMouseOver):
(WebInspector.CanvasTreeElement.prototype._handleMouseOut):
2017-07-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add another Protocol Version
https://bugs.webkit.org/show_bug.cgi?id=174193
<rdar://problem/33150053>
Reviewed by Brian Burg.
* UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js: Added.
* Versions/Inspector-iOS-11.0.json: Added.
2017-07-05 Devin Rousso <drousso@apple.com>
Web Inspector: Group Inspector Style Sheets as part of the Stylesheets folder
https://bugs.webkit.org/show_bug.cgi?id=173435
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
Add special case for CSSStyleSheetTreeElement.
2017-07-05 Devin Rousso <drousso@apple.com>
Web Inspector: Split Canvas.svg into icons for 2D and 3D
https://bugs.webkit.org/show_bug.cgi?id=174057
Reviewed by Matt Baker.
* UserInterface/Images/Canvas2D.svg: Added.
* UserInterface/Images/Canvas3D.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/Canvas.svg.
* UserInterface/Views/ResourceIcons.css:
(.canvas.canvas-2d .icon):
(.canvas:matches(.webgl, .webgl2, .webgpu) .icon):
(.canvas .icon): Deleted.
2017-07-05 Devin Rousso <drousso@apple.com>
Web Inspector: Allow users to log any tracked canvas context
https://bugs.webkit.org/show_bug.cgi?id=173397
<rdar://problem/33111581>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Protocol/RemoteObject.js:
(WebInspector.RemoteObject.resolveCanvasContext):
* UserInterface/Views/CanvasTreeElement.js:
(WebInspector.CanvasTreeElement.prototype.populateContextMenu):
2017-07-03 Devin Rousso <drousso@apple.com>
Web Inspector: Support listing WebGL2 and WebGPU contexts
https://bugs.webkit.org/show_bug.cgi?id=173396
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Canvas.js:
(WebInspector.Canvas.fromPayload):
(WebInspector.Canvas.displayNameForContextType):
2017-07-01 Dan Bernstein <mitz@apple.com>
[macOS] Remove code only needed when building for OS X Yosemite
https://bugs.webkit.org/show_bug.cgi?id=174067
Reviewed by Tim Horton.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/Version.xcconfig:
2017-06-30 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Type token background color in debugger looks poor
https://bugs.webkit.org/show_bug.cgi?id=174063
Reviewed by Devin Rousso.
* UserInterface/Views/TextEditor.css:
CodeMirror widgets do not get range styles like our (.execution-range-highlight).
Make a best effort to carry over the styles to widgets. It isn't perfect, but it
covers all common situations unless a selection ends inside the widget. The
ultimate solution would be to get the expected range styles.
2017-06-30 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Initial search is sometimes performed twice, produces duplicate results
https://bugs.webkit.org/show_bug.cgi?id=174047
Reviewed by Devin Rousso.
* UserInterface/Views/SearchTabContentView.js:
(WebInspector.SearchTabContentView.prototype.performSearch):
The initial layout of the tab content view was setting state to force a search
which may happen after a delay, however the global search field was causing
its own search to happen. We can clear the flag when a search is being performed
to prevent duplicating the search.
2017-06-30 Devin Rousso <drousso@apple.com>
Web Inspector: Add small delay before showing the progress spinner when loading resources
https://bugs.webkit.org/show_bug.cgi?id=173437
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ResourceContentView.js:
(WebInspector.ResourceContentView):
(WebInspector.ResourceContentView.prototype.removeLoadingIndicator): Added.
(WebInspector.ResourceContentView.prototype._contentError):
(WebInspector.ResourceContentView.prototype._hasContent):
Delay the creation of the spinner for 100ms. If the content is available before then, just
clear the timeout and the spinner will never be created/shown.
We measured an average of 35ms to load and display images with slow cases being around 55ms.
100ms was chosen for the timeout to give some room to allow for abnormally slow loading
while not being too long as to be outright noticable.
* UserInterface/Views/FontResourceContentView.js:
(WebInspector.FontResourceContentView.prototype.contentAvailable):
* UserInterface/Views/ImageResourceContentView.js:
(WebInspector.ImageResourceContentView.prototype.contentAvailable):
* UserInterface/Views/TextResourceContentView.js:
(WebInspector.TextResourceContentView.prototype._contentWillPopulate):
Calls the new protected function removeLoadingIndicator to ensure that the spinner (and any
other element) is removed.
This is necessary because TextResourceContentView effectively has two phases of loading its
content: getting the content and formatting it for display. The first follows the same path
as the other ResourceContentView subclasses, the second waits for the ContentWillPopulate
event on SourceCodeTextEditor before it actually adds the content as a subview. In this
case, the spinner should only be removed right before the content is actually added, not
once it's ready.
2017-06-30 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r218983.
https://bugs.webkit.org/show_bug.cgi?id=174042
Broke Debugger Call Stack TreeOutline (Requested by drousso on
#webkit).
Reverted changeset:
"Web Inspector: Remove unnecessary hasChildren from
TreeOutline"
https://bugs.webkit.org/show_bug.cgi?id=173986
http://trac.webkit.org/changeset/218983
2017-06-30 Devin Rousso <drousso@apple.com>
Web Inspector: Default string comparisons to treat numeric characters as numbers
https://bugs.webkit.org/show_bug.cgi?id=173984
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Utilities.js:
(String.prototype.extendedLocaleCompare):
* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
(WebInspector.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedPropertyNames.compare):
* UserInterface/Controllers/ResourceQueryController.js:
(WebInspector.ResourceQueryController.prototype.executeQuery):
* UserInterface/Views/ApplicationCacheFrameContentView.js:
(WebInspector.ApplicationCacheFrameContentView.prototype._sortDataGrid.localeCompare):
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype._iterateOverProperties):
* UserInterface/Views/CookieStorageContentView.js:
(WebInspector.CookieStorageContentView.prototype._sortDataGrid.localeCompare):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAttributes):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByNode):
* UserInterface/Views/DOMStorageContentView.js:
(WebInspector.DOMStorageContentView.prototype._sortDataGrid.comparator):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._compareTopLevelTreeElements):
* UserInterface/Views/FolderizedTreeElement.js:
(WebInspector.FolderizedTreeElement.prototype._compareTreeElementsByMainTitle):
* UserInterface/Views/HeapSnapshotDataGridTree.js:
(WebInspector.HeapSnapshotDataGridTree.buildSortComparator):
* UserInterface/Views/NetworkTimelineView.js:
(WebInspector.NetworkTimelineView.prototype.dataGridSortComparator):
* UserInterface/Views/NewTabContentView.js:
(WebInspector.NewTabContentView.prototype._updateShownTabs):
* UserInterface/Views/OverviewTimelineView.js:
(WebInspector.OverviewTimelineView.prototype._compareDataGridNodesByStartTime):
* UserInterface/Views/ProbeDetailsSidebarPanel.js:
(WebInspector.ProbeDetailsSidebarPanel.prototype.inspect):
* UserInterface/Views/QuickConsole.js:
(WebInspector.QuickConsole.prototype._compareExecutionContextPathComponents):
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel.prototype._createNameValueDataGrid.sortDataGrid.comparator):
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel.prototype._compareTreeElements):
* UserInterface/Views/ResourceTreeElement.js:
(WebInspector.ResourceTreeElement.compareResourceTreeElements):
(WebInspector.ResourceTreeElement.compareFolderAndResourceTreeElements):
* UserInterface/Views/ScriptDetailsTimelineView.js:
(WebInspector.ScriptDetailsTimelineView.prototype.dataGridSortComparator):
* UserInterface/Views/StorageSidebarPanel.js:
(WebInspector.StorageSidebarPanel.prototype._compareTreeElements):
* UserInterface/Views/TimelineDataGrid.js:
(WebInspector.TimelineDataGrid.prototype._sortComparator):
2017-06-29 Devin Rousso <drousso@apple.com>
Web Inspector: Provide a way for creating a new tab but not making it immediately selected
https://bugs.webkit.org/show_bug.cgi?id=173983
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TabBar.js:
(WebInspector.TabBar):
(WebInspector.TabBar.prototype.addTabBarItem):
(WebInspector.TabBar.prototype.insertTabBarItem):
(WebInspector.TabBar.prototype.removeTabBarItem):
(WebInspector.TabBar.prototype._handleClick):
(WebInspector.TabBar.prototype._handleNewTabClick):
* UserInterface/Views/TabBrowser.js:
(WebInspector.TabBrowser.prototype.addTabForContentView):
(WebInspector.TabBrowser.prototype.showTabForContentView):
(WebInspector.TabBrowser.prototype.closeTabForContentView):
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
(WebInspector._openDefaultTab):
(WebInspector._tryToRestorePendingTabs):
(WebInspector.showNewTabTab):
(WebInspector.createNewTabWithType):
Add `options` dictionaries instead of optional parameters.
(WebInspector.tabContentViewClassForRepresentedObject):
Drive-by fix: remove incorrect placement of WebInspector.Collection check. This function
determines TabContentView classes, not ContentView.
2017-06-29 Devin Rousso <drousso@apple.com>
Web Inspector: Remove unnecessary hasChildren from TreeOutline
https://bugs.webkit.org/show_bug.cgi?id=173986
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TreeOutline.js:
(WebInspector.TreeOutline):
(WebInspector.TreeOutline.prototype.appendChild):
(WebInspector.TreeOutline.prototype.insertChild):
(WebInspector.TreeOutline.prototype.removeChildAtIndex):
(WebInspector.TreeOutline.prototype.removeChild):
(WebInspector.TreeOutline.prototype.get selectedTreeElementIndex):
* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype._checkOutlinesForPendingViewStateCookie):
* UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.get value):
2017-06-29 Devin Rousso <drousso@apple.com>
Web Inspector: Cleanup unused/invalid parameters for SidebarPanels
https://bugs.webkit.org/show_bug.cgi?id=173985
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SidebarPanel.js:
* UserInterface/Views/NavigationSidebarPanel.js:
* UserInterface/Views/NavigationSidebarPanel.css:
(.sidebar > .panel.navigation > .overflow-shadow.top): Deleted.
* UserInterface/Views/DetailsSidebarPanel.js:
* UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:
* UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
* UserInterface/Views/DOMDetailsSidebarPanel.js:
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
* UserInterface/Views/IndexedDatabaseDetailsSidebarPanel.js:
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
* UserInterface/Views/ProbeDetailsSidebarPanel.js:
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
* UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
* UserInterface/Views/StorageSidebarPanel.js:
2017-06-29 Devin Rousso <drousso@apple.com>
Web Inspector: Create a single -webkit-canvas for use inside popovers
https://bugs.webkit.org/show_bug.cgi?id=173820
Reviewed by Matt Baker.
* UserInterface/Views/Popover.css:
(.popover):
* UserInterface/Views/Popover.js:
(WebInspector.Popover):
(WebInspector.Popover.prototype._drawBackground):
2017-06-28 Devin Rousso <drousso@apple.com>
Web Inspector: Instrument active pixel memory used by canvases
https://bugs.webkit.org/show_bug.cgi?id=173087
<rdar://problem/32719261>
Reviewed by Joseph Pecoraro.
* .eslintrc:
* UserInterface/Controllers/CanvasManager.js:
(WebInspector.CanvasManager.prototype.canvasMemoryChanged):
* UserInterface/Models/Canvas.js:
(WebInspector.Canvas.fromPayload):
(WebInspector.Canvas.prototype.get memoryCost):
(WebInspector.Canvas.prototype.set memoryCost):
* UserInterface/Protocol/CanvasObserver.js:
(WebInspector.CanvasObserver.prototype.canvasMemoryChanged):
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WebInspector.CanvasDetailsSidebarPanel.prototype.initialLayout):
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshIdentitySection):
(WebInspector.CanvasDetailsSidebarPanel.prototype._formatMemoryRow):
(WebInspector.CanvasDetailsSidebarPanel.prototype._canvasMemoryChanged):
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Utilities.js:
(Number.bytesToString.value):
Add support for gigabyte numbers.
2017-06-27 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused Inspector domain events
https://bugs.webkit.org/show_bug.cgi?id=173905
Reviewed by Matt Baker.
* UserInterface/Protocol/InspectorObserver.js:
(WebInspector.InspectorObserver.prototype.detached): Deleted.
* UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
* Versions/Inspector-iOS-10.0.json:
* Versions/Inspector-iOS-10.3.json:
* Versions/Inspector-iOS-7.0.json:
* Versions/Inspector-iOS-8.0.json:
* Versions/Inspector-iOS-9.0.json:
* Versions/Inspector-iOS-9.3.json:
Remove from legacy backends as well since they did not send it.
2017-06-27 Matt Baker <mattbaker@apple.com>
Web Inspector: no discoverable way to dismiss the split console
https://bugs.webkit.org/show_bug.cgi?id=167034
<rdar://problem/30023436>
Reviewed by Devin Rousso.
This patch adds an Xcode-style toggle button to the left of the
split console navigation bar. Additionally, the split console code
has been broken out into it's own class to reduce the clutter in
Main.js/css, and simplify future console maintenance.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WebInspector.loaded):
Replace the "split" ContentBrowser with a new ConsoleDrawer class,
which encapsulates the drawer height setting and resize behavior.
(WebInspector.contentLoaded):
The console drawer manages its own height.
* UserInterface/Images/HideConsoleDrawer.svg: Added.
* UserInterface/Images/ShowConsoleDrawer.svg: Added.
Console drawer toggle button images. Styled after corresponding Xcode button.
* UserInterface/Main.html:
* UserInterface/Views/ConsoleDrawer.css: Added.
Moved old #split-content-browser styles over from Main.css.
(.console-drawer):
(.console-drawer > .navigation-bar):
(.console-drawer > .navigation-bar > .item.button:not(.clear-log)):
Make button spacing less cramped.
(.console-drawer > .navigation-bar > .item:not(.flexible-space)):
(.console-drawer > .navigation-bar > :matches(.item.button, .log-scope-bar)):
(.console-drawer > .navigation-bar > .item > .glyph,):
* UserInterface/Views/ConsoleDrawer.js: Added.
New class responsible for console drawer expand / collapse and resizer
dragging, which was previously part of Main.js. The console drawer toolbar
now has a toggle button, debugging controls, and a call frames path item.
The "Show Console Tab" button has been removed.
(WebInspector.ConsoleDrawer):
(WebInspector.ConsoleDrawer.prototype.get collapsed):
(WebInspector.ConsoleDrawer.prototype.set collapsed):
(WebInspector.ConsoleDrawer.prototype.get height):
(WebInspector.ConsoleDrawer.prototype.shown):
(WebInspector.ConsoleDrawer.prototype.layout):
(WebInspector.ConsoleDrawer.prototype._consoleResizerMouseDown.dockedResizerDrag):
(WebInspector.ConsoleDrawer.prototype._consoleResizerMouseDown.dockedResizerDragEnd):
(WebInspector.ConsoleDrawer.prototype._consoleResizerMouseDown):
(WebInspector.ConsoleDrawer.prototype._restoreDrawerHeight):
(WebInspector.ConsoleDrawer.prototype._updateDrawerHeight):
(WebInspector.ConsoleDrawer.prototype._selectedTabContentViewDidChange):
When switching to a tab that doesn't support showing the console drawer,
hide it without altering the collapsed state.
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView.prototype.get navigationItems):
* UserInterface/Views/Main.css:
Renamed #split-content-browser to #console-drawer, and moved related
styles to ConsoleDrawer.css.
(#split-content-browser): Deleted.
(#split-content-browser > .navigation-bar): Deleted.
(#split-content-browser > .navigation-bar :matches(.find-banner, .find-banner + .divider)): Deleted.
(#split-content-browser > .navigation-bar .item): Deleted.
(#split-content-browser > .navigation-bar .item:not(.flexible-space)): Deleted.
(#split-content-browser .hierarchical-path-component.log-icon .icon): Deleted.
(#split-content-browser .hierarchical-path-component.log-icon .title): Deleted.
(#split-content-browser .hierarchical-path-component.log-icon select): Deleted.
(#split-content-browser > .navigation-bar > :matches(.hierarchical-path, .log-scope-bar)): Deleted.
(#split-content-browser > .navigation-bar > .log-scope-bar > li): Deleted.
* UserInterface/Views/QuickConsole.js:
(WebInspector.QuickConsole):
(WebInspector.QuickConsole.prototype._toggleOrFocus):
(WebInspector.QuickConsole.prototype._updateStyles):
Update top border style in response to change in selected TabBrowser
tab or the console drawer collapsed state.
(WebInspector.QuickConsole.prototype.consoleLogVisibilityChanged): Deleted.
(WebInspector.QuickConsole.prototype.set keyboardShortcutDisabled): Deleted.
2017-06-24 Joseph Pecoraro <pecoraro@apple.com>
Remove Reflect.enumerate
https://bugs.webkit.org/show_bug.cgi?id=173806
Reviewed by Yusuke Suzuki.
* UserInterface/Models/NativeFunctionParameters.js:
2017-06-23 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Script Timeline bubbles sometimes appear to miss large events
https://bugs.webkit.org/show_bug.cgi?id=173746
<rdar://problem/32950808>
Reviewed by Brian Burg.
* UserInterface/Models/Timeline.js:
(WebInspector.Timeline.prototype.addRecord):
(WebInspector.Timeline.prototype._tryInsertInSortedOrder):
The list of records is assumed to be sorted by the code that draws bubbles
however the order in which we receive them may not be sorted. Make a quick
effort to sort recent records so that as we are drawing the timeline it is
more accurate.
2017-06-23 Brian Burg <bburg@apple.com>
Web Inspector: RTL: flip all go-to-arrow instances
https://bugs.webkit.org/show_bug.cgi?id=173794
<rdar://problem/32221912>
Reviewed by Joseph Pecoraro.
Move the flipping transform so it applies to all go-to arrows.
* UserInterface/Views/DataGrid.css:
(body[dir=rtl] .data-grid td .go-to-arrow):
* UserInterface/Views/Main.css:
(body[dir=rtl] .go-to-arrow):
2017-06-22 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Pausing with a deep call stack can be very slow, avoid eagerly generating object previews
https://bugs.webkit.org/show_bug.cgi?id=173698
Reviewed by Matt Baker.
Introduce RemoteObject.prototype.updatePreview which can be used to update
the preview of a RemoteObject with a current view for the object. Currently
we only use this to fetch the preview that we did not have for the `thisObject`
in the scope chain sidebar. However this could be used generically to update
a RemoteObject's preview (ObjectPreview) at any time.
* UserInterface/Protocol/RemoteObject.js:
(WebInspector.RemoteObject.prototype.canLoadPreview):
(WebInspector.RemoteObject.prototype.updatePreview):
Allow a RemoteObject to update its preview property. Since this only makes
sense on certain Object values include a helper to know when it is appropriate
to fetch a preview.
* UserInterface/Views/ObjectTreePropertyTreeElement.js:
(WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
(WebInspector.ObjectTreePropertyTreeElement.prototype._loadPreviewLazilyIfNeeded):
If the object being shown in the sidebar does not have a preview but can load a
preview then attempt to load it lazily. This is the case for the `thisObject`
which is injected into an ObjectTree in the scope chain sidebar.
2017-06-22 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add icon for Canvas.svg
https://bugs.webkit.org/show_bug.cgi?id=173580
Reviewed by Carlos Garcia Campos.
* UserInterface/Images/gtk/Canvas.svg: Added.
2017-06-21 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add NavigationItemCheckers.svg
https://bugs.webkit.org/show_bug.cgi?id=173692
Reviewed by Carlos Garcia Campos.
* UserInterface/Images/gtk/NavigationItemCheckers.svg: Added.
2017-06-20 Devin Rousso <drousso@apple.com>
Web Inspector: change the selected ScopeBarItem on mousedown instead of click
https://bugs.webkit.org/show_bug.cgi?id=173586
Reviewed by Matt Baker.
Both the Tab bar and Sidebar navigation bar switch the active item on "mousedown" instead of
on "click". ScopeBarItem should follow this pattern, as it is faster and keeps consistency.
* UserInterface/Views/MultipleScopeBarItem.js:
(WebInspector.MultipleScopeBarItem):
(WebInspector.MultipleScopeBarItem.prototype._handleMouseDown):
(WebInspector.MultipleScopeBarItem.prototype._clicked): Deleted.
* UserInterface/Views/ScopeBarItem.js:
(WebInspector.ScopeBarItem):
(WebInspector.ScopeBarItem.prototype._handleMouseDown):
(WebInspector.ScopeBarItem.prototype._clicked): Deleted.
2017-06-20 Devin Rousso <drousso@apple.com>
Web Inspector: Send context attributes for tracked canvases
https://bugs.webkit.org/show_bug.cgi?id=173327
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Canvas.js:
(WebInspector.Canvas.fromPayload):
(WebInspector.Canvas.prototype.get contextAttributes):
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WebInspector.CanvasDetailsSidebarPanel.prototype.initialLayout):
(WebInspector.CanvasDetailsSidebarPanel.prototype.layout):
(WebInspector.CanvasDetailsSidebarPanel.prototype.sizeDidChange):
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshAttributesSection):
* UserInterface/Views/DataGridNode.js:
(WebInspector.DataGridNode.prototype.createCellContent):
Instead of checking if the value of the cell is falsy, check that the key exists in the data.
This allows values like `false` to be displayed.
2017-06-19 Devin Rousso <drousso@apple.com>
Web Inspector: create canvas content view and details sidebar panel
https://bugs.webkit.org/show_bug.cgi?id=138941
<rdar://problem/19051672>
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Canvas.js:
(WebInspector.Canvas):
(WebInspector.Canvas.fromPayload):
(WebInspector.Canvas.prototype.get displayName):
(WebInspector.Canvas.requestNode): Added.
(WebInspector.Canvas.prototype.requestContent): Added.
(WebInspector.Canvas.prototype.saveIdentityToCookie):
* UserInterface/Controllers/CanvasManager.js:
(WebInspector.CanvasManager.prototype.canvasAdded):
(WebInspector.CanvasManager.prototype.canvasRemoved):
* UserInterface/Models/Collection.js:
* UserInterface/Models/Frame.js:
(WebInspector.Frame):
(WebInspector.Frame.prototype.get canvasCollection):
(WebInspector.Frame.prototype.commitProvisionalLoad):
Create a Collection for Canvas in each Frame, and modify it when canvas events are fired.
* UserInterface/Views/CanvasContentView.css: Added.
(.content-view.canvas > .preview):
(.content-view.canvas > .preview > img):
* UserInterface/Views/CanvasContentView.js: Added.
(WebInspector.CanvasContentView):
(WebInspector.CanvasContentView.prototype.get navigationItems):
(WebInspector.CanvasContentView.prototype.shown):
(WebInspector.CanvasContentView.prototype.hidden):
(WebInspector.CanvasContentView.prototype._showPreview):
(WebInspector.CanvasContentView.prototype._updateImageGrid):
(WebInspector.CanvasContentView.prototype._showGridButtonClicked):
* UserInterface/Views/CanvasDetailsSidebarPanel.js: Added.
(WebInspector.CanvasDetailsSidebarPanel):
(WebInspector.CanvasDetailsSidebarPanel.prototype.inspect):
(WebInspector.CanvasDetailsSidebarPanel.prototype.get canvas):
(WebInspector.CanvasDetailsSidebarPanel.prototype.set canvas):
(WebInspector.CanvasDetailsSidebarPanel.prototype.initialLayout):
(WebInspector.CanvasDetailsSidebarPanel.prototype.layout):
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshIdentitySection):
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshSourceSection.this._canvas.requestNode.):
(WebInspector.CanvasDetailsSidebarPanel.prototype._refreshSourceSection):
* UserInterface/Views/CanvasTreeElement.js: Added.
(WebInspector.CanvasTreeElement):
* UserInterface/Views/FrameTreeElement.js:
(WebInspector.FrameTreeElement.prototype.onattach):
(WebInspector.FrameTreeElement.prototype.ondetach):
(WebInspector.FrameTreeElement.prototype.onpopulate):
(WebInspector.FrameTreeElement.prototype._canvasWasAdded):
(WebInspector.FrameTreeElement.prototype._canvasWasRemoved):
(WebInspector.FrameTreeElement):
* UserInterface/Base/Main.js:
* UserInterface/Views/ContentView.js:
(WebInspector.ContentView.createFromRepresentedObject):
(WebInspector.ContentView.isViewable):
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel):
(WebInspector.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
(WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/ResourcesTabContentView.js:
(WebInspector.ResourcesTabContentView):
(WebInspector.ResourcesTabContentView.prototype.canShowRepresentedObject):
Show Canvas objects and tie them to the correct ContentView and TreeElement subclasses.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Images/Canvas.svg: Added.
* UserInterface/Views/ResourceIcons.css:
(.canvas .icon):
Added new files/rules/strings related to Canvas UI.
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings .navigation-bar):
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype.initialLayout):
(WebInspector.SettingsTabContentView.prototype._createGeneralSettingsView):
(WebInspector.SettingsTabContentView.prototype._createDebugSettingsView):
Add an experimental settings toggle in the Debug view for showing canvas contexts.
* UserInterface/Views/FolderizedTreeElement.js:
(WebInspector.FolderizedTreeElement.prototype._compareTreeElementsByMainTitle):
Drive-by fix: ensure that sorting also includes numbers, so that 1 < 2 < 10.
* UserInterface/Views/ImageResourceContentView.js:
(WebInspector.ImageResourceContentView.prototype.shown):
(WebInspector.ImageResourceContentView.prototype.hidden):
(WebInspector.ImageResourceContentView.prototype._updateImageGrid):
(WebInspector.ImageResourceContentView.prototype._showGridButtonClicked):
(WebInspector.ImageResourceContentView):
Drive-by fix: change the activated state of the Show Grid navigation item if it changes
in another view.
2017-06-19 Devin Rousso <drousso@apple.com>
Web Inspector: Unify contextmenu items for all node links/previews
https://bugs.webkit.org/show_bug.cgi?id=173187
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/ContextMenuUtilities.js:
(WebInspector.appendContextMenuItemsForDOMNode.didGetFunctionDetails): Added.
(WebInspector.appendContextMenuItemsForDOMNode.didGetProperty): Added.
(WebInspector.appendContextMenuItemsForDOMNode.didResolveNode): Added.
(WebInspector.appendContextMenuItemsForDOMNode): Added.
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._populateTagContextMenu):
(WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
(WebInspector.DOMTreeElement.prototype._showCustomElementDefinition): Deleted.
* UserInterface/Views/DOMTreeOutline.js:
(WebInspector.DOMTreeOutline.prototype.populateContextMenu):
(WebInspector.DOMTreeOutline.prototype._populateContextMenu.revealElement): Deleted.
(WebInspector.DOMTreeOutline.prototype._populateContextMenu.logElement): Deleted.
(WebInspector.DOMTreeOutline.prototype._populateContextMenu): Deleted.
* UserInterface/Views/RulesStyleDetailsPanel.js:
(WebInspector.RulesStyleDetailsPanel.prototype.refresh.insertMediaOrInheritanceLabel):
Unify common DOM node context menu actions into a single helper function.
* UserInterface/Base/DOMUtilities.js:
(WebInspector.linkifyNodeReference):
(WebInspector.linkifyNodeReferenceElement):
Rework parameters to use options dictionary.
2017-06-16 Matt Baker <mattbaker@apple.com>
Web Inspector: Instrument 2D/WebGL canvas contexts in the backend
https://bugs.webkit.org/show_bug.cgi?id=172623
<rdar://problem/32415986>
Reviewed by Devin Rousso and Joseph Pecoraro.
* UserInterface/Base/Main.js:
(WebInspector.loaded):
* UserInterface/Controllers/CanvasManager.js: Added.
New frontend manager for the Canvas domain.
(WebInspector.CanvasManager):
(WebInspector.CanvasManager.prototype.get canvases):
(WebInspector.CanvasManager.prototype.canvasAdded):
(WebInspector.CanvasManager.prototype.canvasRemoved):
(WebInspector.CanvasManager.prototype._mainResourceDidChange):
* UserInterface/Main.html:
New files.
* UserInterface/Models/Canvas.js: Added.
(WebInspector.Canvas):
(WebInspector.Canvas.fromPayload):
(WebInspector.Canvas.displayNameForContextType):
Get displayable text "2D" or "WebGL" based on context type.
(WebInspector.Canvas.resetUniqueDisplayNameNumbers):
Called by CanvasManager when canvases are cleared.
(WebInspector.Canvas.prototype.get identifier):
(WebInspector.Canvas.prototype.get contextType):
(WebInspector.Canvas.prototype.get frame):
(WebInspector.Canvas.prototype.get cssCanvasName):
For CSS canvases, the identifier passed to getCSSCanvasContext.
(WebInspector.Canvas.prototype.get displayName):
Get displayable canvas name. The name depends on how the canvas was
created, and the information available:
- getCSSCanvasContext: "CSS Canvas <identifier>"
- getContext: "Canvas #<DOM id attribute value>"
- Otherwise: "Canvas 1", "Canvas 2", ...
(WebInspector.Canvas.saveIdentityToCookie):
* UserInterface/Protocol/CanvasObserver.js: Added.
(WebInspector.CanvasObserver.prototype.canvasAdded):
(WebInspector.CanvasObserver.prototype.canvasRemoved):
(WebInspector.CanvasObserver):
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WebInspector.loaded):
2017-06-16 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r218376.
The patch cause multiple Layout Test Crashes.
Reverted changeset:
"Web Inspector: Instrument 2D/WebGL canvas contexts in the
backend"
https://bugs.webkit.org/show_bug.cgi?id=172623
http://trac.webkit.org/changeset/218376
2017-06-15 Matt Baker <mattbaker@apple.com>
Web Inspector: Instrument 2D/WebGL canvas contexts in the backend
https://bugs.webkit.org/show_bug.cgi?id=172623
<rdar://problem/32415986>
Reviewed by Devin Rousso.
* UserInterface/Base/Main.js:
(WebInspector.loaded):
* UserInterface/Controllers/CanvasManager.js: Added.
New frontend manager for the Canvas domain.
(WebInspector.CanvasManager):
(WebInspector.CanvasManager.prototype.get canvases):
(WebInspector.CanvasManager.prototype.canvasAdded):
(WebInspector.CanvasManager.prototype.canvasRemoved):
(WebInspector.CanvasManager.prototype._mainResourceDidChange):
* UserInterface/Main.html:
New files.
* UserInterface/Models/Canvas.js: Added.
(WebInspector.Canvas):
(WebInspector.Canvas.fromPayload):
(WebInspector.Canvas.displayNameForContextType):
Get displayable text "2D" or "WebGL" based on context type.
(WebInspector.Canvas.resetUniqueDisplayNameNumbers):
Called by CanvasManager when canvases are cleared.
(WebInspector.Canvas.prototype.get identifier):
(WebInspector.Canvas.prototype.get contextType):
(WebInspector.Canvas.prototype.get frame):
(WebInspector.Canvas.prototype.get cssCanvasName):
For CSS canvases, the identifier passed to getCSSCanvasContext.
(WebInspector.Canvas.prototype.get displayName):
Get displayable canvas name. The name depends on how the canvas was
created, and the information available:
- getCSSCanvasContext: "CSS Canvas <identifier>"
- getContext: "Canvas #<DOM id attribute value>"
- Otherwise: "Canvas 1", "Canvas 2", ...
(WebInspector.Canvas.saveIdentityToCookie):
* UserInterface/Protocol/CanvasObserver.js: Added.
(WebInspector.CanvasObserver.prototype.canvasAdded):
(WebInspector.CanvasObserver.prototype.canvasRemoved):
(WebInspector.CanvasObserver):
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WebInspector.loaded):
2017-06-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Search highlight doesn't show up in resources when paused
https://bugs.webkit.org/show_bug.cgi?id=173438
<rdar://problem/32800114>
Reviewed by Matt Baker.
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype.revealPosition.revealAndHighlightLine):
Previously we were bailing if executionLineNumber was NaN, which means that when
we were paused we were incorrectly disabling highlights in any resource that does
not have the active callframe. Relax this and make it match the intended behavior
of only disabling highlights if the highlight line matches the execution line.
2017-06-15 Joseph Pecoraro <pecoraro@apple.com>
Uncaught Exception: TypeError: null is not an object (evaluating 'this.contentBrowser.contentViewForRepresentedObject')
https://bugs.webkit.org/show_bug.cgi?id=173425
<rdar://problem/32744172>
Reviewed by Devin Rousso.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WebInspector.ContentBrowserTabContentView.prototype.shown):
Reorder slightly so the NavigationSidebar has its ContentBrowser set
before anyone tries to restore views in the sidebar.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype.showDefaultContentView):
Try to select a script/resource content view instead of nothing.
(WebInspector.DebuggerSidebarPanel.prototype.saveStateToCookie):
When a resource is selected, save it using the normal path.
* UserInterface/Views/NetworkSidebarPanel.js:
(WebInspector.NetworkSidebarPanel.prototype.canShowDifferentContentView):
Remove a reference to an unused / stale member variable.
2017-06-14 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Pretty print / type info / code coverage buttons disappear after switching tabs
https://bugs.webkit.org/show_bug.cgi?id=162515
<rdar://problem/28455322>
Reviewed by Joseph Pecoraro.
Each ContentView owns a list of NavigationItems. When the ContentView moves across
Tabs (ContentBrowsers) it removes its NavigationItems from the old Tab's NavigationBar
and adds them to the new Tab's NavigationBar. When switching back to the original tab
the ContentView is restored, but its NavigationItems are not carried back.
* UserInterface/Views/ContentBrowser.js:
(WebInspector.ContentBrowser.prototype._updateContentViewNavigationItems):
Add a forceUpdate parameter that is needed when navigationItems are unchanged but navigationBar is
different.
(WebInspector.ContentBrowser.prototype._removeAllNavigationItems):
Remove navigation items even when their navigationBar is no longer a current navigationBar,
e.g. a navigationBar of the previous tab.
(WebInspector.ContentBrowser.prototype._contentViewNavigationItemsDidChange):
* UserInterface/Views/ContentViewContainer.js:
(WebInspector.ContentViewContainer.prototype._takeOwnershipOfContentView):
2017-06-14 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: SVG files and favicon don't display properly
https://bugs.webkit.org/show_bug.cgi?id=173389
<rdar://problem/32774281>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ImageResourceContentView.css:
(.content-view.resource.image img):
Don't set a `min-width` as it has odd interactions with flexbox.
2017-06-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Console: Message icons overlay source location
https://bugs.webkit.org/show_bug.cgi?id=173291
Reviewed by Matt Baker.
* UserInterface/Views/ConsoleMessageView.css:
(.console-message-location.call-frame):
This should be a safe change since a method name and a source link already have
max-width set to 20vw and 30vw respectively.
2017-06-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Don't use -webkit-user-modify CSS property
https://bugs.webkit.org/show_bug.cgi?id=173232
Reviewed by Devin Rousso.
Replace -webkit-user-modify CSS property with contentEditable HTML attribute.
* UserInterface/Views/Editing.css:
(.editing):
* UserInterface/Views/EditingSupport.js:
(cleanUpAfterEditing):
* UserInterface/Views/VisualStyleSelectorTreeItem.css:
(.item.visual-style-selector-item:not(.dom-element-icon).editable > .titles > .title):
* UserInterface/Views/VisualStyleSelectorTreeItem.js:
(WebInspector.VisualStyleSelectorTreeItem.prototype.ondeselect):
(WebInspector.VisualStyleSelectorTreeItem.prototype._handleMainTitleMouseDown):
(WebInspector.VisualStyleSelectorTreeItem.prototype._commitSelector):
2017-06-13 Sam Weinig <sam@webkit.org>
Rename JSDOMWindowShell to JSDOMWindowProxy to match the HTML5 spec.
https://bugs.webkit.org/show_bug.cgi?id=80733
Reviewed by Chris Dumez.
* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot.prototype._isNodeGlobalObject):
2017-06-12 Devin Rousso <drousso@apple.com>
Web Inspector: Add grid to images to clarify transparency and image size
https://bugs.webkit.org/show_bug.cgi?id=173184
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
Add setting for controlling the image grid.
* UserInterface/Images/NavigationItemCheckers.svg: Added.
* UserInterface/Views/ImageResourceContentView.css:
(.content-view.resource.image):
(.content-view.resource.image img):
Replace the border spacing around the image with padding on the container. This is required
because a border will extend the area that is effected by `background-image`, meaning that
the checkerboard would appear in that area as well, giving misleading information as to the
size of the image.
* UserInterface/Views/ImageResourceContentView.js:
(WebInspector.ImageResourceContentView):
(WebInspector.ImageResourceContentView.prototype.get navigationItems): Added.
(WebInspector.ImageResourceContentView.prototype.contentAvailable):
(WebInspector.ImageResourceContentView.prototype.shown): Added.
(WebInspector.ImageResourceContentView.prototype._toggleImageGrid): Added.
(WebInspector.ImageResourceContentView.prototype._showGridButtonClicked): Added.
(WebInspector.ImageResourceContentView.prototype.get imageElement): Deleted.
Apply the CSS class for showing the grid when the added navigation item is activated.
* UserInterface/Views/Main.css:
(img.show-grid):
Generates a checkerboard pattern via `background-image` using the following process:
- four `linear-gradients` are drawn, one in each corner
- each draws one half of a 20x20 square, specified by `background-size`
- they are then repositioned using `background-position` so that the two halfs align
+------+ \--2
|1 /\ 2| |\ |
| / \ | => | \|
|/ \| => 4--\
|\ /| => 1--/
| \ / | => | /|
|4 \/ 3| |/ |
+------+ /--3
2017-06-10 Dan Bernstein <mitz@apple.com>
Reverted r218056 because it made the IDE reindex constantly.
* Configurations/DebugRelease.xcconfig:
2017-06-10 Dan Bernstein <mitz@apple.com>
[Xcode] With Xcode 9 developer beta, everything rebuilds when switching between command-line and IDE
https://bugs.webkit.org/show_bug.cgi?id=173223
Reviewed by Sam Weinig.
The rebuilds were happening due to a difference in the compiler options that the IDE and
xcodebuild were specifying. Only the IDE was passing the -index-store-path option. To make
xcodebuild pass that option, too, set CLANG_INDEX_STORE_ENABLE to YES if it is unset, and
specify an appropriate path in CLANG_INDEX_STORE_PATH.
* Configurations/DebugRelease.xcconfig:
2017-06-10 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r217749): Event listeners are removed even if they haven't been added
https://bugs.webkit.org/show_bug.cgi?id=173185
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel):
(WebInspector.ResourceDetailsSidebarPanel.prototype.set resource):
(WebInspector.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):
Maintain a member variable flag such that event listeners are only removed if it is true.
It is only set to true once the event listeners are added.
2017-06-09 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r217258): Misspelled variable names
https://bugs.webkit.org/show_bug.cgi?id=173189
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Main.js:
(WebInspector.tabContentViewClassForRepresentedObject):
* UserInterface/Views/ResourceIcons.css:
(.large :matches(.resource-icon.resource-type-stylesheet, .stylesheet-icon) .icon):
(.large .resource-icon.resource-type-stylesheet .icon): Deleted.
2017-06-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Web inspector does not show non-shadow children of an element with a shadow root (e.g. <video>)
https://bugs.webkit.org/show_bug.cgi?id=173121
<rdar://problem/30948943>
Reviewed by Matt Baker.
* UserInterface/Models/DOMNode.js:
(WebInspector.DOMNode):
Only populate _children when we have both the shadowRoots and
actual children payloads. Backends always send shadowRoots but
only send children when requested. So if we have shadowRoots
but expect actual children, don't populate _children until we
request the child nodes.
2017-06-07 Carlos Garcia Campos <cgarcia@igalia.com>
Remove legacy INSPECTOR_SERVER implementation
https://bugs.webkit.org/show_bug.cgi?id=172966
Reviewed by Žan Doberšek.
Remove InspectorFrontendHostStub and thr web sockets initialization.
* UserInterface/Base/InspectorFrontendHostStub.js: Removed.
* UserInterface/Base/Main.js:
(WebInspector.loaded):
* UserInterface/Main.html:
* UserInterface/Test.html:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
2017-06-07 Devin Rousso <drousso@apple.com>
Web Inspector: Add ContextMenu item to log WebSocket object to console
https://bugs.webkit.org/show_bug.cgi?id=172878
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Protocol/RemoteObject.js:
(WebInspector.RemoteObject.resolveWebSocket):
* UserInterface/Views/ResourceTreeElement.js:
(WebInspector.ResourceTreeElement.prototype.populateContextMenu):
2017-06-07 Devin Rousso <drousso@apple.com>
Web Inspector: Allow user to choose stylesheet when creating new rules
https://bugs.webkit.org/show_bug.cgi?id=172487
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/DOMNodeStyles.js:
(WebInspector.DOMNodeStyles.prototype.addRule.inspectorStyleSheetAvailable):
(WebInspector.DOMNodeStyles.prototype.addRule):
* UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
(WebInspector.CSSStyleDetailsSidebarPanel.prototype.initialLayout):
(WebInspector.CSSStyleDetailsSidebarPanel.prototype._newRuleButtonContextMenu):
* UserInterface/Views/RulesStyleDetailsPanel.js:
(WebInspector.RulesStyleDetailsPanel.prototype.newRuleButtonClicked):
(WebInspector.RulesStyleDetailsPanel.prototype.newRuleButtonContextMenu):
* UserInterface/Views/VisualStyleSelectorSection.js:
(WebInspector.VisualStyleSelectorSection):
(WebInspector.VisualStyleSelectorSection.prototype._addNewRuleContextMenu):
(WebInspector.VisualStyleSelectorSection.prototype._addNewRule): Renamed _addNewRuleClick.
2017-06-06 Joseph Pecoraro <pecoraro@apple.com>
Unreviewed rollout r217807. Caused a test to crash.
* UserInterface/Proxies/HeapSnapshotNodeProxy.js:
(WebInspector.HeapSnapshotNodeProxy):
(WebInspector.HeapSnapshotNodeProxy.deserialize):
* UserInterface/Views/HeapSnapshotClassDataGridNode.js:
(WebInspector.HeapSnapshotClassDataGridNode.prototype.createCellContent):
* UserInterface/Views/HeapSnapshotClusterContentView.js:
(WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName):
* UserInterface/Views/HeapSnapshotDataGridTree.js:
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPathRow):
* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot):
(HeapSnapshot.updateCategoriesAndMetadata):
(HeapSnapshot.prototype.serializeNode):
(HeapSnapshot.prototype._gcRootPathes.visitNode):
(HeapSnapshot.prototype._gcRootPathes):
2017-06-05 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Improve ES6 Class instances in Heap Snapshot instances view
https://bugs.webkit.org/show_bug.cgi?id=172848
<rdar://problem/25709212>
Reviewed by Saam Barati.
* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot):
Support the new snapshot version. The only thing that changes are the
node flags, and its actually completely compatible with version 1.
(HeapSnapshot.updateCategoriesAndMetadata):
List the count of object type instances in each class category.
(HeapSnapshot.prototype.serializeNode):
Include whether or not the node is an object type.
* UserInterface/Proxies/HeapSnapshotNodeProxy.js:
(WebInspector.HeapSnapshotNodeProxy):
(WebInspector.HeapSnapshotNodeProxy.deserialize):
Add a new Node isObjectType property based on the new data.
* UserInterface/Views/HeapSnapshotClassDataGridNode.js:
(WebInspector.HeapSnapshotClassDataGridNode.prototype.createCellContent):
* UserInterface/Views/HeapSnapshotClusterContentView.js:
(WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName):
If a class contains 50% or more object type instances then it as such
instead of defaulting to native.
* UserInterface/Views/HeapSnapshotDataGridTree.js:
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
We can be more specific than the default if the individual instance is
known to be an object type.
2017-06-02 Devin Rousso <drousso@apple.com>
Web Inspector: Don't create NavigationSidebarPanel classes until they are needed by a Tab
https://bugs.webkit.org/show_bug.cgi?id=172621
Reviewed by Timothy Hatcher.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WebInspector.ContentBrowserTabContentView):
(WebInspector.ContentBrowserTabContentView.prototype.shown):
* UserInterface/Views/TabContentView.js:
(WebInspector.TabContentView):
(WebInspector.TabContentView.prototype.get navigationSidebarPanel):
* UserInterface/Views/NetworkTabContentView.js:
(WebInspector.NetworkTabContentView.prototype.canShowRepresentedObject):
* UserInterface/Views/SearchTabContentView.js:
(WebInspector.SearchTabContentView.prototype.canShowRepresentedObject):
Use public getter for navigationSidebarPanel.
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel):
(WebInspector.ResourceSidebarPanel.prototype.initialLayout): Added.
Load information about the current frame once the sidebar panel is displayed.
2017-06-02 Devin Rousso <drousso@apple.com>
Web Inspector: Use initialLayout for DetailsSidebarPanel classes
https://bugs.webkit.org/show_bug.cgi?id=172381
Reviewed by Timothy Hatcher.
* UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:
(WebInspector.ApplicationCacheDetailsSidebarPanel):
(WebInspector.ApplicationCacheDetailsSidebarPanel.prototype.initialLayout): Added.
(WebInspector.ApplicationCacheDetailsSidebarPanel.prototype.layout):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype.initialLayout): Added.
(WebInspector.DOMNodeDetailsSidebarPanel.prototype.layout):
* UserInterface/Views/IndexedDatabaseDetailsSidebarPanel.js:
(WebInspector.IndexedDatabaseDetailsSidebarPanel):
(WebInspector.IndexedDatabaseDetailsSidebarPanel.prototype.initialLayout): Added.
(WebInspector.IndexedDatabaseDetailsSidebarPanel.prototype.layout):
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WebInspector.LayerTreeDetailsSidebarPanel):
(WebInspector.LayerTreeDetailsSidebarPanel.prototype.initialLayout): Added.
(WebInspector.LayerTreeDetailsSidebarPanel.prototype.layout):
* UserInterface/Views/ProbeDetailsSidebarPanel.js:
(WebInspector.ProbeDetailsSidebarPanel):
(WebInspector.ProbeDetailsSidebarPanel.prototype.initialLayout): Added.
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel):
(WebInspector.ResourceDetailsSidebarPanel.prototype.set resource):
(WebInspector.ResourceDetailsSidebarPanel.prototype.initialLayout): Added.
(WebInspector.ResourceDetailsSidebarPanel.prototype.layout):
(WebInspector.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):
2017-06-02 Devin Rousso <drousso@apple.com>
Web Inspector: The CodeMirror instance in the ConsolePrompt does't need to be refreshed each time it is shown
https://bugs.webkit.org/show_bug.cgi?id=172608
Reviewed by Timothy Hatcher.
* UserInterface/Views/ConsolePrompt.js:
(WebInspector.ConsolePrompt.prototype.shown): Deleted.
* UserInterface/Views/DatabaseContentView.js:
(WebInspector.DatabaseContentView.prototype.shown): Deleted.
* UserInterface/Views/QuickConsole.js:
(WebInspector.QuickConsole):
2017-06-02 Devin Rousso <drousso@apple.com>
Web Inspector: Attributes table in Node Details Sidebar should have editable keys and values
https://bugs.webkit.org/show_bug.cgi?id=167076
<rdar://problem/30033629>
Reviewed by Timothy Hatcher.
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAttributes):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._attributeNodeValueChanged):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._createAttributesDataGrid): Deleted.
Rework creation of the attributes DataGrid so that it is only created once and cleared for
new content. Nodes in the DataGrid are now EditableDataGridNode instances so that attribute
names and values can be changed from within the sidebar. The DataGrid is also sorted based
on attribute name, to make finding attributes easier.
* UserInterface/Views/DataGrid.css:
(.data-grid tr.editable .cell-content > input):
(body:not(.window-inactive, .window-docked-inactive) .data-grid:matches(:focus, .force-focus) tr.editable.selected .cell-content > input):
* UserInterface/Views/DetailsSection.css:
(.details-section > .content .data-grid tr:not(.editable) td.value-column):
(.details-section > .content .data-grid tr:not(.editable) td.value-column > div):
(.details-section > .content .data-grid td.value-column): Deleted.
(.details-section > .content .data-grid td.value-column > div): Deleted.
* UserInterface/Main.html:
* UserInterface/Views/EditableDataGridNode.js: Added.
(WebInspector.EditableDataGridNode):
(WebInspector.EditableDataGridNode.prototype.get element):
(WebInspector.EditableDataGridNode.prototype.createCellContent):
(WebInspector.EditableDataGridNode.prototype._handleKeyPress):
(WebInspector.EditableDataGridNode.prototype._handleBlur):
(WebInspector.EditableDataGridNode.prototype._notifyInputElementValueChanged):
Special type of DataGridNode that wraps the content of each cell in an <input>.
2017-06-02 Devin Rousso <drousso@apple.com>
Web Inspector: Existing query in Search tab doesn't perform search on reload
https://bugs.webkit.org/show_bug.cgi?id=172663
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/SearchSidebarPanel.css:
(.sidebar > .panel.navigation.search.changed > .banner):
(.sidebar > .panel.navigation.search.changed > .banner > a):
(.sidebar > .panel.navigation.search.changed > :matches(.content, .empty-content-placeholder)):
* UserInterface/Views/SearchSidebarPanel.js:
(WebInspector.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
(WebInspector.SearchSidebarPanel.prototype._mainResourceDidChange):
(WebInspector.SearchSidebarPanel.prototype._contentChanged):
Listen for any "resource added" event, and show the content changed banner when one occurs.
2017-06-02 Devin Rousso <drousso@apple.com>
Web Inspector: Should see active Web Sockets when opening Web Inspector
https://bugs.webkit.org/show_bug.cgi?id=172312
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype.webSocketHandshakeResponseReceived):
(WebInspector.FrameResourceManager.prototype.initialize): Removed.
Rework order of agent enable calls to ensure that the main frame is initialized before any
websocket events are dispatched.
* UserInterface/Models/WebSocketResource.js:
(WebInspector.WebSocketResource.ReadyState):
Change symbol strings in enum for better printing in tests.
2017-06-01 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r217691.
This change broke the Windows build.
Reverted changeset:
"Web Inspector: Should see active Web Sockets when opening Web
Inspector"
https://bugs.webkit.org/show_bug.cgi?id=172312
http://trac.webkit.org/changeset/217691
2017-06-01 Devin Rousso <drousso@apple.com>
Web Inspector: Should see active Web Sockets when opening Web Inspector
https://bugs.webkit.org/show_bug.cgi?id=172312
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype.webSocketHandshakeResponseReceived):
(WebInspector.FrameResourceManager.prototype.initialize): Removed.
Rework order of agent enable calls to ensure that the main frame is initialized before any
websocket events are dispatched.
* UserInterface/Models/WebSocketResource.js:
(WebInspector.WebSocketResource.ReadyState):
Change symbol strings in enum for better printing in tests.
2017-06-01 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Web Sockets: Unable to inspect a WebSocket that receives >50 messages per second
https://bugs.webkit.org/show_bug.cgi?id=171904
<rdar://problem/32095863>
Reviewed by Matt Baker.
Every size increase of a resource causes a sidebar item to be re-attached to the DOM. Sending or
receiving a WebSocket message causes a size increase. When size increase happens too frequently,
the go-to arrow starts to flicker and becomes unclickable. This patch makes sure a sidebar item gets
re-attached only when its position (index) changes.
* UserInterface/Views/NetworkSidebarPanel.js:
Add the go-to arrow and close buttons when treeElement.status is a spinner element.
(WebInspector.NetworkSidebarPanel.prototype.treeElementAddedOrChanged):
* UserInterface/Views/ResourceTreeElement.js:
(WebInspector.ResourceTreeElement.prototype._updateStatus):
Setting status to "" removes the go-to arrow and close buttons in the Network tab.
Only set status to "" to remove the spinner.
* UserInterface/Views/TimelineDataGrid.js:
(WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
* UserInterface/Views/TreeOutline.js:
(WebInspector.TreeOutline.prototype.reattachIfIndexChanged): Added.
2017-05-31 Devin Rousso <drousso@apple.com>
Web Inspector: Add Debug view to Settings tab for debug settings and experimental features
https://bugs.webkit.org/show_bug.cgi?id=172477
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Setting.js:
Add three new settings:
- autoLogProtocolMessages
- autoLogTimeStats
- enableUncaughtExceptionReporter
* UserInterface/Debug/Bootstrap.js:
(WebInspector.runBootstrapOperations):
Update toolbar item state when editor in Settings tab is changed.
* UserInterface/Debug/UncaughtExceptionReporter.js:
(handleUncaughtExceptionRecord):
Return if the setting controlling the uncaught exception reporter is disabled.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass):
(InspectorBackendClass.prototype.set dumpInspectorProtocolMessages):
(InspectorBackendClass.prototype.get dumpInspectorProtocolMessages):
(InspectorBackendClass.prototype.set dumpInspectorTimeStats):
(InspectorBackendClass.prototype.get dumpInspectorTimeStats):
Replace member variables and private Setting objects with items on WebInspector.settings.
* UserInterface/Main.html:
* UserInterface/Views/GeneralSettingsView.js: Removed.
Consolidated into SettingsTabContentView.
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView):
(WebInspector.SettingsTabContentView.prototype.initialLayout):
(WebInspector.SettingsTabContentView.prototype._createGeneralSettingsView):
(WebInspector.SettingsTabContentView.prototype._createDebugSettingsView):
(WebInspector.SettingsTabContentView.prototype._updateDebugSettingsViewVisibility):
* UserInterface/Views/SettingsView.js:
(WebInspector.SettingsView.prototype.addGroupWithCustomSetting):
2017-05-31 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: BackForwardArrows.svg is not shown
https://bugs.webkit.org/show_bug.cgi?id=172741
Reviewed by Carlos Garcia Campos.
* UserInterface/Images/gtk/BackForwardArrows.svg: Renamed id names to match with Apple's images.
2017-05-30 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: images dragged from Inspector to Desktop are named "Unknown.png"
https://bugs.webkit.org/show_bug.cgi?id=141515
<rdar://problem/9251308>
Reviewed by Wenson Hsieh.
* UserInterface/Views/ImageResourceContentView.js:
(WebInspector.ImageResourceContentView.prototype.contentAvailable):
Set a non-standard "filename" attribute to provide a suggested filename
for this <img> containing data: or blob: content.
2017-05-30 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add DOM breakpoint image for GTK+
https://bugs.webkit.org/show_bug.cgi?id=169326
Reviewed by Carlos Garcia Campos.
* UserInterface/Images/gtk/DOMBreakpoint.svg: Added.
2017-05-28 Dan Bernstein <mitz@apple.com>
[Xcode] ALWAYS_SEARCH_USER_PATHS is set to YES
https://bugs.webkit.org/show_bug.cgi?id=172691
Reviewed by Tim Horton.
* Configurations/Base.xcconfig: Set ALWAYS_SEARCH_USER_PATHS to NO.
2017-05-26 Devin Rousso <drousso@apple.com>
Web Inspector: Reloading the page after switching from the Resource tab switches back
https://bugs.webkit.org/show_bug.cgi?id=172622
Reviewed by Joseph Pecoraro.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/SearchSidebarPanel.js:
(WebInspector.SearchSidebarPanel.prototype._treeSelectionDidChange):
Don't show the newly selected tree element's represented object if the sidebar is not visible.
2017-05-26 Devin Rousso <drousso@apple.com>
Web Inspector: New Tab contents have extra vertical spacing when wrapped
https://bugs.webkit.org/show_bug.cgi?id=172530
Reviewed by Joseph Pecoraro.
* UserInterface/Views/NewTabContentView.css:
(.new-tab.tab.content-view):
2017-05-26 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add new GTK+ icons for Web Sockets
https://bugs.webkit.org/show_bug.cgi?id=172296
Reviewed by Carlos Garcia Campos.
Add more free icons for the Web Inspector of GTK+ port.
* UserInterface/Images/gtk/WebSocket.png: Added.
* UserInterface/Images/gtk/WebSocket@2x.png: Added.
* UserInterface/Images/gtk/WebSocketLarge.png: Added.
* UserInterface/Images/gtk/WebSocketLarge@2x.png: Added.
* UserInterface/Views/ResourceIcons.css:
(.resource-icon.resource-type-websocket .icon):
(.large .resource-icon.resource-type-websocket .icon):
(body:matches(.mac-platform, .windows-platform) .resource-icon.resource-type-websocket .icon): Deleted.
(body:matches(.mac-platform, .windows-platform) .large .resource-icon.resource-type-websocket .icon): Deleted.
2017-05-25 Devin Rousso <drousso@apple.com>
Web Inspector: Don't create DetailsSidebarPanel classes until they are needed by a Tab
https://bugs.webkit.org/show_bug.cgi?id=172393
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
Remove global instantiation of all DetailsSidebarPanel objects.
(WebInspector.instanceForClass):
Utility function for creating and accessing an instance of a given class.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WebInspector.ContentBrowserTabContentView):
* UserInterface/Views/DebuggerTabContentView.js:
(WebInspector.DebuggerTabContentView):
(WebInspector.DebuggerTabContentView.prototype.showDetailsSidebarPanels):
* UserInterface/Views/ElementsTabContentView.js:
(WebInspector.ElementsTabContentView):
* UserInterface/Views/NetworkTabContentView.js:
(WebInspector.NetworkTabContentView):
* UserInterface/Views/ResourcesTabContentView.js:
(WebInspector.ResourcesTabContentView):
* UserInterface/Views/SearchTabContentView.js:
(WebInspector.SearchTabContentView):
* UserInterface/Views/StorageTabContentView.js:
(WebInspector.StorageTabContentView):
* UserInterface/Views/TabContentView.js:
(WebInspector.TabContentView):
(WebInspector.TabContentView.prototype.get detailsSidebarPanels):
* UserInterface/Views/TimelineTabContentView.js:
(WebInspector.TimelineTabContentView):
Now accepts an array of DetailsSidebarPanel classes that are all instantiated when they are
about to be added to the DetailsSidebar.
2017-05-25 Devin Rousso <drousso@apple.com>
Web Inspector: Changing the width of a Sidebar when it's collapsed shouldn't trigger a layout
https://bugs.webkit.org/show_bug.cgi?id=172606
Reviewed by Matt Baker.
* UserInterface/Views/Sidebar.js:
(WebInspector.Sidebar.prototype._recalculateWidth):
2017-05-25 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add ListStylePositionInside.svg and ListStylePositionOutside.svg
https://bugs.webkit.org/show_bug.cgi?id=172574
Reviewed by Michael Catanzaro.
Add more free icons for the Web Inspector of GTK+ port.
* UserInterface/Images/gtk/ListStylePositionInside.svg: Added.
* UserInterface/Images/gtk/ListStylePositionOutside.svg: Added.
2017-05-25 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add new icons AnimationPlayStatePaused.svg and AnimationPlayStateRunning.svg
https://bugs.webkit.org/show_bug.cgi?id=172579
Reviewed by Michael Catanzaro.
Add more free icons for the Web Inspector of GTK+ port.
* UserInterface/Images/gtk/AnimationPlayStatePaused.svg: Added.
* UserInterface/Images/gtk/AnimationPlayStateRunning.svg: Added.
2017-05-24 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add new GTK+ icons for garbage collect and clean buttons in Console
https://bugs.webkit.org/show_bug.cgi?id=167356
Reviewed by Michael Catanzaro.
* UserInterface/Images/gtk/NavigationItemClear.svg: Aligned for 16x16 dimension.
* UserInterface/Images/gtk/NavigationItemGarbageCollect.svg: Added.
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView): Removed the Clear image dimension's conditional expression.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView): Ditto.
* UserInterface/Views/TimelineRecordingContentView.js:
(WebInspector.TimelineRecordingContentView): Ditto.
2017-05-24 Devin Rousso <drousso@apple.com>
Web Inspector: Don't load the active recording until a Timeline view needs to be shown
https://bugs.webkit.org/show_bug.cgi?id=172467
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TimelineTabContentView.js:
(WebInspector.TimelineTabContentView):
(WebInspector.TimelineTabContentView.prototype.restoreFromCookie):
(WebInspector.TimelineTabContentView.prototype._showTimelineViewForType):
Move the call to `_recordingLoaded` to when a timeline view needs to be shown and only if
`_displayedRecording` isn't already set. This delays the creation of the content view for
the recording to right before it needs to be displayed.
2017-05-23 Matt Baker <mattbaker@apple.com>
Web Inspector: content views are not restored on reload if its tree element is filtered out
https://bugs.webkit.org/show_bug.cgi?id=165744
<rdar://problem/27461323>
Reviewed by Devin Rousso.
By default, NavigationSidebar should get the selected represented object
from its content browser, instead of relying on the tree selection. This
allows a filtered tree selection to persist across page loads.
* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype.get currentRepresentedObject):
(WebInspector.NavigationSidebarPanel.prototype.saveStateToCookie):
Get the represented object from the content browser instead of relying
on the tree selection (which can be filtered out).
(WebInspector.NavigationSidebarPanel.prototype._updateFilter):
(WebInspector.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
(WebInspector.NavigationSidebarPanel.prototype._treeElementWasFiltered):
Reselect the represented object's tree element when it is shown due
to a change in the filter state.
(WebInspector.NavigationSidebarPanel.prototype.get hasSelectedElement): Deleted.
Not used.
(WebInspector.NavigationSidebarPanel.prototype.representedObjectWasFiltered): Deleted.
Not used. Replaced by _treeElementWasFiltered.
2017-05-23 Matt Baker <mattbaker@apple.com>
Web Inspector: Cannot delete a disabled XHR breakpoint
https://bugs.webkit.org/show_bug.cgi?id=171971
<rdar://problem/32129527>
Reviewed by Devin Rousso.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WebInspector.DOMDebuggerManager.prototype.removeXHRBreakpoint):
Dispatch XHRBreakpointRemoved event before removing the breakpoint from
the backend. A disabled breakpoint will have already been removed, and
an enabled breakpoint that fails to get removed from the backend should
be removed from the frontend, to prevent it being resolved in the future.
Drive-by fix: remove spurious dispatch of DOMBreakpointRemoved event.
(WebInspector.DOMDebuggerManager.prototype._detachXHRBreakpoint): Deleted.
Merged with removeXHRBreakpoint to simplify implementation.
2017-05-23 Devin Rousso <drousso@apple.com>
Web Inspector: use initialLayout for NetworkSidebarPanel
https://bugs.webkit.org/show_bug.cgi?id=172470
Reviewed by Joseph Pecoraro.
* UserInterface/Views/NetworkSidebarPanel.js:
(WebInspector.NetworkSidebarPanel):
(WebInspector.NetworkSidebarPanel.prototype.showDefaultContentView):
(WebInspector.NetworkSidebarPanel.prototype.initialLayout):
Don't create NetworkGridContentView until right before it is shown.
2017-05-23 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add a new icon DockLeft.svg
https://bugs.webkit.org/show_bug.cgi?id=172492
Reviewed by Carlos Garcia Campos.
* UserInterface/Images/gtk/DockLeft.svg: Added.
2017-05-23 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add a new icon CSSVariable.svg
https://bugs.webkit.org/show_bug.cgi?id=172491
Reviewed by Carlos Garcia Campos.
* UserInterface/Images/gtk/CSSVariable.svg: Added.
2017-05-22 Devin Rousso <drousso@apple.com>
Web Inspector: Changes are not applied in CSS sidebar when switching to Resources tab without blurring editor
https://bugs.webkit.org/show_bug.cgi?id=172388
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WebInspector.CSSStyleDeclarationSection.prototype.refreshEditor):
* UserInterface/Views/RulesStyleDetailsPanel.js:
(WebInspector.RulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionEditorFocused):
(WebInspector.RulesStyleDetailsPanel.prototype.shown):
When showing the StyleDetailsPanel, if there is an active editor, which is now saved each
time one becomes focused, force an update of that editor's content.
2017-05-22 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: New Tab contents not centered vertically
https://bugs.webkit.org/show_bug.cgi?id=172486
Reviewed by Devin Rousso.
* UserInterface/Views/NewTabContentView.css:
(.new-tab.tab.content-view):
Use align-items instead of align-content.
2017-05-22 Devin Rousso <drousso@apple.com>
Web Inspector: New CSS Rules should go into a new Stylesheet Resource that can be viewed/edited/saved
https://bugs.webkit.org/show_bug.cgi?id=138810
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Controllers/CSSStyleManager.js:
(WebInspector.CSSStyleManager):
(WebInspector.CSSStyleManager.prototype.preferredInspectorStyleSheetForFrame):
(WebInspector.CSSStyleManager.prototype._updateResourceContent.fetchedStyleSheetContent):
Manually dispatch a change event for modifications to CSSStyleSheet objects since they are
not covered by the listener for Resource changes.
* UserInterface/Main.html:
Include WebInspector.CSSStyleSheetTreeElement.
* UserInterface/Models/Collection.js:
(WebInspector.Collection.TypeVerifier):
* UserInterface/Models/ResourceCollection.js:
(WebInspector.ResourceCollection.TypeVerifier.Stylesheet):
Add TypeVerifier for CSSStyleSheet.
* UserInterface/Models/DOMNodeStyles.js:
(WebInspector.DOMNodeStyles.prototype._parseRulePayload):
Manually create a SourceCodeLocation object for Inspector Style Sheets.
* UserInterface/Views/CSSStyleSheetTreeElement.js: Added.
(WebInspector.CSSStyleSheetTreeElement):
* UserInterface/Views/ResourceIcons.css:
(:matches(.resource-icon.resource-type-stylesheet, .stylessheet-icon) .icon):
* UserInterface/Views/FrameTreeElement.js:
(WebInspector.FrameTreeElement.forwardingConstructor):
(WebInspector.FrameTreeElement):
(WebInspector.FrameTreeElement.prototype.onattach):
(WebInspector.FrameTreeElement.prototype.ondetach):
(WebInspector.FrameTreeElement.prototype.onpopulate):
(WebInspector.FrameTreeElement.prototype._styleSheetAdded):
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel):
(WebInspector.ResourceSidebarPanel.prototype._styleSheetAdded):
(WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
Listen for the creation of CSSStyleSheet objects and add them to the sidebar if they are an
Inspector Style Sheet. Regular style sheets are added via their respective resources.
* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
Prevent CSSStyleSheetTreeElement instances from attempting to save state to a cookie.
* UserInterface/Base/Main.js:
(WebInspector.tabContentViewClassForRepresentedObject):
(WebInspector.createSourceCodeLocationLink):
* UserInterface/Views/ContentView.js:
(WebInspector.ContentView.createFromRepresentedObject):
(WebInspector.ContentView.isViewable):
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WebInspector.CSSStyleDeclarationSection.prototype.refresh):
* UserInterface/Views/ResourcesTabContentView.js:
(WebInspector.ResourcesTabContentView.prototype.canShowRepresentedObject):
* UserInterface/Views/ResourceContentView.js:
(WebInspector.ResourceContentView):
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype._prepareEditorForInitialContent):
(WebInspector.SourceCodeTextEditor.prototype._looselyMatchesSourceCodeLocation):
(WebInspector.SourceCodeTextEditor.prototype._matchesSourceCodeLocation):
* UserInterface/Views/TextResourceContentView.js:
(WebInspector.TextResourceContentView):
(WebInspector.TextResourceContentView.prototype.get supportsSave):
(WebInspector.TextResourceContentView.prototype.get saveData):
(WebInspector.TextResourceContentView.prototype._contentWillPopulate):
(WebInspector.TextResourceContentView.prototype._shouldBeEditable):
Support editing and saving an Inspector Style Sheet via its CSSStyleSheet object.
2017-05-22 Brian Burg <bburg@apple.com>
Web Inspector: webkit reload policy should match default behavior
https://bugs.webkit.org/show_bug.cgi?id=171385
<rdar://problem/31871515>
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Main.js:
Use PageAgent.reload.invoke to make the reload options more explicit.
* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness.prototype.reloadPage):
Convert this method to take an options dictionary rather than positional
boolean arguments. Update call sites to pass correct options.
When running tests, we want to revalidate unexpired resources, as there
does not seem to be another reliable way to trigger revalidated cached
resources from a Web Inspector layout test. Make this behavior the default.
2017-05-22 Simon Fraser <simon.fraser@apple.com>
Support transform-box to switch sizing box in SVG
https://bugs.webkit.org/show_bug.cgi?id=145783
Reviewed by Dean Jackson.
Add transform-box to the list of autocompletions.
* UserInterface/External/CodeMirror/css.js:
2017-05-22 Brian Burg <bburg@apple.com>
Web Inspector: RTL: In Timelines > JavaScript & Events, digits for sample count are not localized
https://bugs.webkit.org/show_bug.cgi?id=171819
Reviewed by Matt Baker.
* UserInterface/Views/ScriptTimelineDataGridNode.js:
(WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent):
2017-05-22 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: RTL: Text in autocomplete popover should be aligned left
https://bugs.webkit.org/show_bug.cgi?id=171998
Reviewed by Brian Burg.
Autocomplete popover is only used for CSS and JavaScript, and
these should always be shown as LTR text.
* UserInterface/Views/CompletionSuggestionsView.css:
(.completion-suggestions):
2017-05-22 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add active call frame indicator image
https://bugs.webkit.org/show_bug.cgi?id=161987
<rdar://problem/28307419>
Reviewed by Carlos Garcia Campos.
Add a free icon for the Web Inspector of GTK port.
* UserInterface/Images/gtk/ActiveCallFrame.svg: Added.
2017-05-19 Devin Rousso <drousso@apple.com>
Web Inspector: Use initialLayout for Settings tab
https://bugs.webkit.org/show_bug.cgi?id=172304
Reviewed by Matt Baker.
* UserInterface/Views/GeneralSettingsView.js:
(WebInspector.GeneralSettingsView.prototype.initialLayout):
Move listener for zoom factor to only update that editor.
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView):
(WebInspector.SettingsTabContentView.prototype.initialLayout): Added.
It is not necessary to create the UI for editing settings until the Settings tab is shown.
Use initialLayout to ensure UI gets created exactly once, after the tab is selected.
2017-05-18 Devin Rousso <drousso@apple.com>
REGRESSION (r?): Web Inspector: Shift-click on color square in Styles sidebar should not select text
https://bugs.webkit.org/show_bug.cgi?id=171902
Reviewed by Matt Baker.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseUp):
Do not attempt to select text if the element being clicked is a bookmark (such as a swatch).
2017-05-18 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Web Socket Document Icon
https://bugs.webkit.org/show_bug.cgi?id=170023
Reviewed by Matt Baker.
Icons made by Jon Davis.
* UserInterface/Images/WebSocket.png: Added.
* UserInterface/Images/WebSocket@2x.png: Added.
* UserInterface/Images/WebSocketLarge.png: Added.
* UserInterface/Images/WebSocketLarge@2x.png: Added.
New icons for Web Socket resources.
* UserInterface/Views/ResourceIcons.css:
(body:matches(.mac-platform, .windows-platform) .resource-icon.resource-type-websocket .icon):
(body:matches(.mac-platform, .windows-platform) .large .resource-icon.resource-type-websocket .icon):
Use the icon.
2017-05-18 Fujii Hironori <Hironori.Fujii@sony.com>
Web Inspector: [GTK] Adopt currentColor for mask SVG images
https://bugs.webkit.org/show_bug.cgi?id=150603
Reviewed by Carlos Garcia Campos.
* UserInterface/Images/gtk/Circle.svg:
* UserInterface/Images/gtk/ClearBoth.svg:
* UserInterface/Images/gtk/ClearLeft.svg:
* UserInterface/Images/gtk/ClearRight.svg:
* UserInterface/Images/gtk/Close.svg:
* UserInterface/Images/gtk/CloseLarge.svg:
* UserInterface/Images/gtk/Console.svg:
* UserInterface/Images/gtk/Debugger.svg:
* UserInterface/Images/gtk/DockBottom.svg:
* UserInterface/Images/gtk/DockRight.svg:
* UserInterface/Images/gtk/DownloadArrow.svg:
* UserInterface/Images/gtk/Elements.svg:
* UserInterface/Images/gtk/Errors.svg:
* UserInterface/Images/gtk/Eye.svg:
* UserInterface/Images/gtk/FloatLeft.svg:
* UserInterface/Images/gtk/FloatRight.svg:
* UserInterface/Images/gtk/FontStyleItalic.svg:
* UserInterface/Images/gtk/FontStyleNormal.svg:
* UserInterface/Images/gtk/Gear.svg:
* UserInterface/Images/gtk/Issues.svg:
* UserInterface/Images/gtk/Logs.svg:
* UserInterface/Images/gtk/Minus.svg:
* UserInterface/Images/gtk/NavigationItemClear.svg:
* UserInterface/Images/gtk/NavigationItemTrash.svg:
* UserInterface/Images/gtk/Network.svg:
* UserInterface/Images/gtk/NewTab.svg:
* UserInterface/Images/gtk/NewTabPlus.svg:
* UserInterface/Images/gtk/Pause.svg:
* UserInterface/Images/gtk/Pencil.svg:
* UserInterface/Images/gtk/Plus13.svg:
* UserInterface/Images/gtk/Plus15.svg:
* UserInterface/Images/gtk/ReloadFull.svg:
* UserInterface/Images/gtk/ReloadToolbar.svg:
* UserInterface/Images/gtk/Resources.svg:
* UserInterface/Images/gtk/Search.svg:
* UserInterface/Images/gtk/SearchResults.svg:
* UserInterface/Images/gtk/SplitToggleUp.svg:
* UserInterface/Images/gtk/StepInto.svg:
* UserInterface/Images/gtk/StepOut.svg:
* UserInterface/Images/gtk/StepOver.svg:
* UserInterface/Images/gtk/Stop.svg:
* UserInterface/Images/gtk/Storage.svg:
* UserInterface/Images/gtk/TextAlignCenter.svg:
* UserInterface/Images/gtk/TextAlignJustify.svg:
* UserInterface/Images/gtk/TextAlignLeft.svg:
* UserInterface/Images/gtk/TextAlignRight.svg:
* UserInterface/Images/gtk/TextDecorationLineThrough.svg:
* UserInterface/Images/gtk/TextDecorationOverline.svg:
* UserInterface/Images/gtk/TextDecorationUnderline.svg:
* UserInterface/Images/gtk/TextTransformCapitalize.svg:
* UserInterface/Images/gtk/TextTransformLowercase.svg:
* UserInterface/Images/gtk/TextTransformUppercase.svg:
* UserInterface/Images/gtk/Time.svg:
* UserInterface/Images/gtk/Timeline.svg:
* UserInterface/Images/gtk/Undock.svg:
* UserInterface/Images/gtk/VisualStyleNone.svg:
* UserInterface/Images/gtk/VisualStylePropertyLinked.svg:
* UserInterface/Images/gtk/VisualStylePropertyUnlinked.svg:
* UserInterface/Images/gtk/Weight.svg:
2017-05-15 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add new GTK+ icons for Search icon of Quick Open dialog
https://bugs.webkit.org/show_bug.cgi?id=172110
Reviewed by Michael Catanzaro.
Add a free icon for the Web Inspector in GTK+.
* UserInterface/Images/gtk/Search.svg: Added.
2017-05-15 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add new GTK+ icons for Worker Scripts / Web Sockets
https://bugs.webkit.org/show_bug.cgi?id=164138
Reviewed by Michael Catanzaro.
Add more free icons for the Web Inspector in GTK+.
* UserInterface/Images/gtk/WorkerScript.png: Added.
* UserInterface/Images/gtk/WorkerScript@2x.png: Added.
* UserInterface/Images/gtk/WorkerScriptLarge.png: Added.
* UserInterface/Images/gtk/WorkerScriptLarge@2x.png: Added.
* UserInterface/Views/ResourceIcons.css:
(.script.worker-icon .icon):
(.large .script.worker-icon .icon):
(body:matches(.mac-platform, .windows-platform) .script.worker-icon .icon): Deleted.
(body:matches(.mac-platform, .windows-platform) .large .script.worker-icon .icon): Deleted.
2017-05-11 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: RTL: "Elements > Styles - Rules" rule and media query headers should be left aligned
https://bugs.webkit.org/show_bug.cgi?id=171954
<rdar://problem/31961976>
Reviewed by Matt Baker.
* UserInterface/Views/CSSStyleDeclarationSection.css:
(.style-declaration-section > .header):
(.style-declaration-section.locked > .header > .locked-icon):
(.style-declaration-section > .header > .icon):
(.style-declaration-section > .header > textarea):
(.style-declaration-section.invalid-selector > .header > .icon):
(body[dir=ltr] .style-declaration-section > .header): Deleted.
(body[dir=rtl] .style-declaration-section > .header): Deleted.
(body[dir=ltr] .style-declaration-section.locked > .header > .locked-icon): Deleted.
(body[dir=rtl] .style-declaration-section.locked > .header > .locked-icon): Deleted.
(body[dir=ltr] .style-declaration-section > .header > .icon): Deleted.
(body[dir=rtl] .style-declaration-section > .header > .icon): Deleted.
(body[dir=ltr] .style-declaration-section > .header > textarea): Deleted.
(body[dir=rtl] .style-declaration-section > .header > textarea): Deleted.
Remove RTL rules.
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WebInspector.CSSStyleDeclarationSection):
Set dir="ltr" so selector's textareas work correctly.
* UserInterface/Views/RulesStyleDetailsPanel.css:
(.sidebar > .panel.details.css-style .rules):
2017-05-11 Matt Baker <mattbaker@apple.com>
Web Inspector: Error trying to delete DOM breakpoints from the Debugger tab
https://bugs.webkit.org/show_bug.cgi?id=171970
<rdar://problem/32129262>
Reviewed by Brian Burg.
In the Debugger sidebar, DOM breakpoints can be cleared from a DOM node
in two ways: by using the DOM node tree element's context menu, or by
pressing the delete key while the element is selected. Each method used
a different code path, and the latter had an error which caused it to fail.
Add a `removeDOMBreakpointsForNode` method to DOMDebuggerManager to make
the operation convenient, and call it from both event handlers.
* UserInterface/Controllers/DOMBreakpointTreeController.js:
(WebInspector.DOMBreakpointTreeController.appendBreakpointContextMenuItems):
Use convenience method.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WebInspector.DOMDebuggerManager.prototype.removeDOMBreakpointsForNode):
Helper function for removing all of a node's breakpoints.
* UserInterface/Views/DOMNodeTreeElement.js:
(WebInspector.DOMNodeTreeElement.prototype.ondelete):
Use convenience method.
2017-05-11 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add new GTK+ icons for resources in large sizes (32px @ 1x/2x)
https://bugs.webkit.org/show_bug.cgi?id=155802
<rdar://problem/25320686>
Reviewed by Carlos Garcia Campos.
Add more free icons for the Web Inspector in GTK+.
* UserInterface/Images/gtk/ClippingCSSLarge.png: Added.
* UserInterface/Images/gtk/ClippingCSSLarge@2x.png: Added.
* UserInterface/Images/gtk/ClippingGenericLarge.png: Added.
* UserInterface/Images/gtk/ClippingGenericLarge@2x.png: Added.
* UserInterface/Images/gtk/ClippingJSLarge.png: Added.
* UserInterface/Images/gtk/ClippingJSLarge@2x.png: Added.
* UserInterface/Images/gtk/DocumentCSSLarge.png: Added.
* UserInterface/Images/gtk/DocumentCSSLarge@2x.png: Added.
* UserInterface/Images/gtk/DocumentFontLarge.png: Added.
* UserInterface/Images/gtk/DocumentFontLarge@2x.png: Added.
* UserInterface/Images/gtk/DocumentGenericLarge.png: Added.
* UserInterface/Images/gtk/DocumentGenericLarge@2x.png: Added.
* UserInterface/Images/gtk/DocumentImageLarge.png: Added.
* UserInterface/Images/gtk/DocumentImageLarge@2x.png: Added.
* UserInterface/Images/gtk/DocumentJSLarge.png: Added.
* UserInterface/Images/gtk/DocumentJSLarge@2x.png: Added.
* UserInterface/Images/gtk/DocumentMarkupLarge.png: Added.
* UserInterface/Images/gtk/DocumentMarkupLarge@2x.png: Added.
2017-05-10 Brian Burg <bburg@apple.com>
Web Inspector: RTL: in Timelines > JavaScript & Events, digits for timer and animation frame number are not localized
https://bugs.webkit.org/show_bug.cgi?id=171818
Reviewed by Joseph Pecoraro.
These numbers need to be formatted with %d, not %s.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/ScriptTimelineRecord.js:
(WebInspector.ScriptTimelineRecord.EventType.displayName):
2017-05-10 Brian Burg <bburg@apple.com>
Web Inspector: remove dead code for switching Toolbar display options
https://bugs.webkit.org/show_bug.cgi?id=170738
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
* UserInterface/Views/ButtonToolbarItem.css:
(.toolbar .item.button > .glyph):
(.toolbar .item.button > .label):
(.toolbar.icon-and-label-vertical .item.button): Deleted.
(.toolbar.icon-and-label-horizontal .item.button): Deleted.
(.toolbar.small-size .item.button > .glyph): Deleted.
(.toolbar.label-only .item.button > .glyph): Deleted.
(.toolbar.label-only .item.activate.button.activated > .label): Deleted.
(.toolbar.icon-and-label-horizontal .item.button > .label): Deleted.
(.toolbar.icon-only .item.button > .label): Deleted.
* UserInterface/Views/ControlToolbarItem.css:
(.toolbar .item.control):
(.toolbar:matches(.icon-and-label-horizontal, .icon-only) .item.control): Deleted.
* UserInterface/Views/DashboardContainerView.css:
(.toolbar .dashboard-container):
(.toolbar.icon-and-label-vertical:matches(.small-size, .normal-size) .dashboard-container): Deleted.
(.toolbar.label-only .dashboard-container,): Deleted.
(.toolbar.normal-size:matches(.icon-only, .icon-and-label-vertical, .icon-and-label-horizontal) .dashboard-container): Deleted.
(.toolbar.label-only .dashboard-container .advance-arrow): Deleted.
(body[dir=ltr] .toolbar.label-only .dashboard-container .advance-arrow): Deleted.
(body[dir=rtl] .toolbar.label-only .dashboard-container .advance-arrow): Deleted.
* UserInterface/Views/DefaultDashboardView.css:
(.toolbar .dashboard.default > .item):
(.toolbar.label-only .dashboard.default > .item,): Deleted.
(.toolbar.normal-size:matches(.icon-only, .icon-and-label-vertical, .icon-and-label-horizontal) .dashboard.default > .item): Deleted.
* UserInterface/Views/ReplayDashboardView.css:
(.toolbar .dashboard.replay .item.button > .glyph):
(.toolbar.label-only .dashboard.replay .item.button > .glyph): Deleted.
* UserInterface/Views/Toolbar.css:
(.toolbar .control-section):
(.toolbar:matches(.icon-and-label-horizontal.small-size, .icon-only.small-size, .label-only) .control-section): Deleted.
* UserInterface/Views/Toolbar.js:
(WebInspector.Toolbar):
(WebInspector.Toolbar.prototype.layout):
(WebInspector.Toolbar.prototype.get displayMode): Deleted.
(WebInspector.Toolbar.prototype.set displayMode): Deleted.
(WebInspector.Toolbar.prototype.get sizeMode): Deleted.
(WebInspector.Toolbar.prototype.set sizeMode): Deleted.
(WebInspector.Toolbar.prototype._handleContextMenuEvent): Deleted.
(WebInspector.Toolbar.prototype._changeDisplayMode): Deleted.
(WebInspector.Toolbar.prototype._toggleSmallIcons): Deleted.
2017-05-10 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Copy to clipboard fails via InspectorFrontendHostStub
https://bugs.webkit.org/show_bug.cgi?id=171907
Reviewed by Joseph Pecoraro.
* UserInterface/Base/InspectorFrontendHostStub.js:
(WebInspector.InspectorFrontendHostStub.prototype.copyText):
Actually make a text selection before attempting to copy to clipboard.
2017-05-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Provide resource load error reason text in details sidebar
https://bugs.webkit.org/show_bug.cgi?id=171901
<rdar://problem/29850995>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype.resourceRequestDidFailLoading):
* UserInterface/Models/Resource.js:
(WebInspector.Resource):
(WebInspector.Resource.prototype.get failureReasonText):
(WebInspector.Resource.prototype.markAsFailed):
* UserInterface/Protocol/NetworkObserver.js:
(WebInspector.NetworkObserver.prototype.loadingFailed):
Include the error text we got from the backend. In most cases this should
be a localized error description.
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel.prototype.set resource):
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshErrorReason):
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
Include an Error field alongside the status code section when there was an error.
2017-05-09 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK][Win] Web Inspector: Cann't open "Quick Open" dialog by pressing Ctrl+Shift+O
https://bugs.webkit.org/show_bug.cgi?id=171798
Reviewed by Michael Catanzaro.
PC can't input the shortcut keys Command+Shift+O and Command+P.
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded): Use CommandOrControl instead of Command.
2017-05-09 Brian Burg <bburg@apple.com>
Web Inspector: Assertion failed: Cannot select item with unexpected parent bar. (at NavigationBar.js:132)
https://bugs.webkit.org/show_bug.cgi?id=171885
Reviewed by Matt Baker.
This new assertion revealed a real misuse of the NavigationBar API.
* UserInterface/Views/NavigationBar.js:
(WebInspector.NavigationBar.prototype.set selectedNavigationItem):
Improve this to be an assertion so it can be paused at using the debugger.
* UserInterface/Views/TimelineTabContentView.js:
(WebInspector.TimelineTabContentView.prototype._changeViewMode):
We need to set a NavigationItem as the selected item, not its identifier.
Look up the corresponding item for the identifier that we received (the view mode).
2017-05-08 Brian Burg <bburg@apple.com>
Web Inspector: RTL: box model labels have bad alignment
https://bugs.webkit.org/show_bug.cgi?id=171817
Reviewed by Joseph Pecoraro.
* UserInterface/Views/BoxModelDetailsSectionRow.css:
(.details-section .row.box-model .label):
(body[dir=ltr] .details-section .row.box-model .label):
(body[dir=rtl] .details-section .row.box-model .label):
We can't just use a mirrored leading margin because all the
text here is center-aligned. Just hardcode a reasonable value.
2017-05-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Request/Response toggles not working
https://bugs.webkit.org/show_bug.cgi?id=171833
<rdar://problem/31341637>
Reviewed by Brian Burg.
* UserInterface/Views/HierarchicalPathNavigationItem.js:
(WebInspector.HierarchicalPathNavigationItem.set components.let.componentsEqual):
(WebInspector.HierarchicalPathNavigationItem.prototype.set components):
If the new components being set were shallowly equal, then they wouldn't
actually be updated even if ultimately they are different. In this case
the Path Components with values "request" / "response" would not update
between different resources because the path components had equivalent
simple values. Provide a different discriminator (comparisonData) which
can be an object so these path components compare as necessarily different.
* UserInterface/Views/HeapSnapshotClusterContentView.js:
(WebInspector.HeapSnapshotClusterContentView.createPathComponent):
(WebInspector.HeapSnapshotClusterContentView):
* UserInterface/Views/ResourceClusterContentView.js:
(WebInspector.ResourceClusterContentView.createPathComponent):
(WebInspector.ResourceClusterContentView):
(WebInspector.ResourceClusterContentView.prototype._resourceTypeDidChange):
* UserInterface/Views/SVGImageResourceClusterContentView.js:
(WebInspector.SVGImageResourceClusterContentView):
* UserInterface/Views/ScriptClusterTimelineView.js:
(WebInspector.ScriptClusterTimelineView.createPathComponent):
(WebInspector.ScriptClusterTimelineView):
Provide comparisonData for path components cases that would need it.
2017-05-08 Chris Dumez <cdumez@apple.com>
Drop non-standard Element.scrollByLines() / scrollByPages()
https://bugs.webkit.org/show_bug.cgi?id=171820
Reviewed by Simon Fraser.
Drop non-standard Element.scrollByLines() / scrollByPages() from
WebInspector code.
* UserInterface/Models/NativeFunctionParameters.js:
2017-05-08 Matt Baker <mattbaker@apple.com>
Web Inspector: Make it easy to dynamically show/hide a SettingsView
https://bugs.webkit.org/show_bug.cgi?id=171765
<rdar://problem/32031280>
Reviewed by Brian Burg.
This patch adds SettingsTabContentView.prototype.setSettingsViewVisible,
for dynamically showing/hiding a child view (and its NavigationBar item).
The following new behavior is relevant when more that one child SettingsView
exist in the Settings tab:
- Hiding the selected view will cause a new view to become selected.
The previous visible view is selected, if it exists. Otherwise the
next visible view is used.
- Showing a view when no views are selected cause the view to be selected.
As the Settings tab currently has only one child view, the behavior above
was tested by adding a handful of vanilla SettingsView objects to the tab
and toggling their visibility.
* UserInterface/Views/NavigationBar.js:
Simplify overloaded parameter `navigationItemOrIdentifierOrIndex`, which
is used in a few places and is always an instance of NavigationItem.
(WebInspector.NavigationBar):
(WebInspector.NavigationBar.prototype.removeNavigationItem):
(WebInspector.NavigationBar.prototype.get selectedNavigationItem):
(WebInspector.NavigationBar.prototype.set selectedNavigationItem):
(WebInspector.NavigationBar.prototype.findNavigationItem):
Lookup a navigation item by its identifier.
(WebInspector.NavigationBar.prototype._findNavigationItem): Deleted.
Replaced overloaded private method with new public method.
* UserInterface/Views/NavigationItem.js:
Cleanup.
(WebInspector.NavigationItem):
(WebInspector.NavigationItem.prototype.get identifier):
(WebInspector.NavigationItem.prototype.get element):
(WebInspector.NavigationItem.prototype.get minimumWidth):
(WebInspector.NavigationItem.prototype.get parentNavigationBar):
* UserInterface/Views/SettingsTabContentView.css:
Use `visibility: hidden` instead of `display: none` when hiding the
NavigationBar, so that the selected view's top position stays the same.
(.content-view.settings):
(.content-view.settings .navigation-bar.invisible):
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView):
Switch to an array of SettingsViews instead of a map. Fast lookup isn't
a concern due to the small number of items, and having indices simplifies
traversing the previous/next items in `setSettingsViewVisible`.
(WebInspector.SettingsTabContentView.prototype.set selectedSettingsView):
Rename `page` to `settingsView`.
(WebInspector.SettingsTabContentView.prototype.addSettingsView):
(WebInspector.SettingsTabContentView.prototype.setSettingsViewVisible):
Shows/hides the specified view. Hiding the selected SettingsView will
cause another visible view to become selected, if one exists.
(WebInspector.SettingsTabContentView.prototype._updateNavigationBarVisibility):
Helper for updating navigation bar visibility after making a change
to the navigation items.
(WebInspector.SettingsTabContentView.prototype._navigationItemSelected):
2017-05-08 Myles C. Maxfield <mmaxfield@apple.com>
Unprefix unicode-bidi CSS values
https://bugs.webkit.org/show_bug.cgi?id=171761
Reviewed by Simon Fraser.
* UserInterface/Models/CSSKeywordCompletions.js:
2017-05-08 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add new GTK+ icon for timeline recording stopwatch
https://bugs.webkit.org/show_bug.cgi?id=154088
Reviewed by Carlos Garcia Campos.
Add a free icon and remove some unused ones for the Web Inspector
in GTK+.
* UserInterface/Images/gtk/Stopwatch.png: Removed.
* UserInterface/Images/gtk/Stopwatch.svg: Added.
* UserInterface/Images/gtk/Stopwatch@2x.png: Removed.
* UserInterface/Views/TimelineIcons.css:
(body:not(.mac-platform, .windows-platform) .stopwatch-icon .icon): Deleted.
2017-05-05 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r212998): Web Inspector: bad spacing of go-to arrow for HTTP POST request data
https://bugs.webkit.org/show_bug.cgi?id=171674
Reviewed by Matt Baker.
* UserInterface/Views/DetailsSection.css:
(body[dir=ltr] .details-section > .content > .group > .row.simple > .value .go-to-arrow):
(body[dir=rtl] .details-section > .content > .group > .row.simple > .value .go-to-arrow):
Swap margin-left and margin-right. This regressed when RTL support was added.
2017-05-03 Devin Rousso <webkit@devinrousso.com>
REGRESSION (r215630): Web Inspector: Option-Click on URL in Styles sidebar does not work
https://bugs.webkit.org/show_bug.cgi?id=171569
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
Add missing `frame` parameter to `WebInspector.openURL`.
2017-05-03 Nikita Vasilyev <nvasilyev@apple.com>
Uncaught Exception: Can't make a ContentView for an unknown representedObject of type: IndexedDatabase
https://bugs.webkit.org/show_bug.cgi?id=167473
<rdar://problem/30249715>
Reviewed by Matt Baker.
When an indexed database is selected in the Storage navigation sidebar, show its host, security origin, and version.
Previously, selecting an indexed database didn't change the content view. It could lead to a misleading state
when an indexed database is selected in the sidebar, but the content view showed previously selected item such as
Cookies or Local Storage.
* UserInterface/Main.html:
* UserInterface/Views/ContentView.css:
(.content-view .details-section):
(.content-view .details-section > .content):
(.content-view .details-section > .content > .group > .row.simple > .label):
(.content-view .details-section:last-child):
* UserInterface/Views/ContentView.js:
(WebInspector.ContentView.createFromRepresentedObject):
(WebInspector.ContentView.isViewable):
* UserInterface/Views/IndexedDatabaseContentView.css: Added.
(.indexed-database.content-view):
(.indexed-database.content-view .indexed-database-details):
(.indexed-database.content-view .details-section > .header):
* UserInterface/Views/IndexedDatabaseContentView.js: Added.
(WebInspector.IndexedDatabaseContentView):
* UserInterface/Views/IndexedDatabaseDetailsSidebarPanel.js:
(WebInspector.IndexedDatabaseDetailsSidebarPanel.prototype.inspect):
Don't show the details sidebar for IndexedDB top level item since it has the same content as the content view.
* UserInterface/Views/StorageSidebarPanel.js:
(WebInspector.StorageSidebarPanel._treeSelectionDidChange):
* UserInterface/Views/StorageTabContentView.js:
(WebInspector.StorageTabContentView.prototype.canShowRepresentedObject):
(WebInspector.StorageTabContentView):
2017-05-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: 404 Image Load does not appear as a failure in Web Inspector
https://bugs.webkit.org/show_bug.cgi?id=171587
<rdar://problem/13222846>
Reviewed by Matt Baker.
* UserInterface/Models/Resource.js:
(WebInspector.Resource.prototype.createObjectURL):
This may return null if the data is not a Blob. This can happen if we
loaded non-base64Encoded text content for an Image. Such as a 404 response.
(WebInspector.Resource.prototype.hadLoadingError):
Consistent way to check for any kind of loading error.
(WebInspector.Resource.prototype.getImageSize):
Handle failure to create an object URL.
* UserInterface/Views/FontResourceContentView.js:
(WebInspector.FontResourceContentView.prototype.contentAvailable):
* UserInterface/Views/ImageResourceContentView.js:
(WebInspector.ImageResourceContentView.prototype.contentAvailable):
Handle failure to create an object URL.
:
* UserInterface/Views/ResourceContentView.js:
(WebInspector.ResourceContentView):
(WebInspector.ResourceContentView.prototype.showGenericErrorMessage):
(WebInspector.ResourceContentView.prototype._protocolError): Deleted.
Provide a way for subclasses to show a generic resource loading error.
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
* UserInterface/Views/ResourceTreeElement.js:
(WebInspector.ResourceTreeElement.prototype._updateStatus):
Use the consistent helper for denoting loading errors.
2017-05-02 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Remove GTK+ icon FontVariantSmallCaps.svg
https://bugs.webkit.org/show_bug.cgi?id=171542
Reviewed by Carlos Garcia Campos.
This image is not used and Apple's one was removed in Bug 148720.
* UserInterface/Images/gtk/FontVariantSmallCaps.svg: Removed.
2017-05-02 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Remove GTK+ icons AnimationPlayStatePaused.svg and AnimationPlayStateRunning.svg
https://bugs.webkit.org/show_bug.cgi?id=171540
Reviewed by Carlos Garcia Campos.
These images aren't used since r204152 (Bug 160566). Instead,
Plus13.svg and Minus.svg are used.
* UserInterface/Images/gtk/BreakpointActionAdd.svg: Removed.
* UserInterface/Images/gtk/BreakpointActionRemove.svg: Removed.
2017-04-30 Chris Dumez <cdumez@apple.com>
Drop support for legacy ClientRect / ClientRectList
https://bugs.webkit.org/show_bug.cgi?id=171418
Reviewed by Sam Weinig.
Drop ClientRectList-related code.
* UserInterface/Models/NativeFunctionParameters.js:
2017-04-27 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add new GTK+ icons for different Script Timeline Views (Events and Call Trees)
https://bugs.webkit.org/show_bug.cgi?id=155077
Reviewed by Joseph Pecoraro.
* UserInterface/Images/gtk/CallTrees.svg: Added.
* UserInterface/Images/gtk/Events.svg: Added.
* UserInterface/Views/PathComponentIcons.css:
(body:not(.mac-platform, .windows-platform) .heap-snapshot-record .icon,):
(body:not(.mac-platform, .windows-platform) .events-icon .icon,): Deleted.
2017-04-27 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Remove unused ToggleControlToolbarItem.js
https://bugs.webkit.org/show_bug.cgi?id=171401
Reviewed by Joseph Pecoraro.
* UserInterface/Main.html:
* UserInterface/Views/ToggleControlToolbarItem.js: Removed.
2017-04-27 Brian Burg <bburg@apple.com>
Web Inspector: RTL: inherit system layout direction by default
https://bugs.webkit.org/show_bug.cgi?id=171402
<rdar://problem/30753626>
Reviewed by Joseph Pecoraro.
Web Inspector's layout direction should follow the system layout direction
by default now that most RTL bugs seem to be fixed. We are ready for more
feedback.
* UserInterface/Base/Main.js:
* UserInterface/Base/Setting.js:
Rename the existing "layout-direction" setting so that the new default
value is set properly even for people who have overridden the layout
direction while the setting was exposed to everyone.
* UserInterface/Views/GeneralSettingsView.js:
(WebInspector.GeneralSettingsView.prototype.initialLayout):
(WebInspector.GeneralSettingsView.prototype.layout):
(WebInspector.GeneralSettingsView):
Make the layout direction override setting only visible when DebugUI
is turned on. This remains only for engineers to quickly check layout bugs.
* UserInterface/Views/SettingsView.js:
(WebInspector.SettingsView.prototype.addGroupWithCustomSetting):
(WebInspector.SettingsView.prototype.addCustomSetting): Deleted.
Refactor the convenience method to return both the group and the
custom setting. This allows us to toggle .hidden on the entire
row for the Layout Direction setting (label and editor).
* Localizations/en.lproj/localizedStrings.js:
Unlocalize the setting strings since they are only shown in engineering builds now.
2017-04-27 Brian Burg <bburg@apple.com>
Web Inspector: RTL: fix alignment of "truncated call stack" message
https://bugs.webkit.org/show_bug.cgi?id=170477
Reviewed by Devin Rousso.
* UserInterface/Views/ThreadTreeElement.css:
(.tree-outline > .item.thread + ol > .item.truncated-call-frames):
(body[dir=ltr] .tree-outline > .item.thread + ol > .item.truncated-call-frames):
(body[dir=rtl] .tree-outline > .item.thread + ol > .item.truncated-call-frames):
(.tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
(body[dir=ltr] .tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
(body[dir=rtl] .tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
2017-04-27 Brian Burg <bburg@apple.com>
Web Inspector: RTL: layout issues in Open Resource Dialog
https://bugs.webkit.org/show_bug.cgi?id=170551
Reviewed by Matt Baker.
We need to flip the cancel and search icons, and flip padding
in the tree outline that contains search results.
I am still not happy with the title/subtitle ordering
(i.e., the domain vs the resource name), but this issue will
be solved primarily in the navigation sidebar first and then
adjusted for Open Resource Dialog if those changes are not
sufficient.
* UserInterface/Views/OpenResourceDialog.css:
(.open-resource-dialog > .field):
(body[dir=ltr] .open-resource-dialog > .field):
(body[dir=rtl] .open-resource-dialog > .field):
(.open-resource-dialog > .field::before):
(body[dir=ltr] .open-resource-dialog > .field::before):
(body[dir=rtl] .open-resource-dialog > .field::before):
(.open-resource-dialog > .field > input):
(body[dir=ltr] .open-resource-dialog > .field > input):
(body[dir=rtl] .open-resource-dialog > .field > input):
(.open-resource-dialog > .field > img):
(body[dir=ltr] .open-resource-dialog > .field > img):
(body[dir=rtl] .open-resource-dialog > .field > img):
(.open-resource-dialog > .tree-outline .item):
(body[dir=ltr] .open-resource-dialog > .tree-outline .item):
(body[dir=rtl] .open-resource-dialog > .tree-outline .item):
2017-04-27 Brian Burg <bburg@apple.com>
Web Inspector: fix tooltip wording for Reload button
https://bugs.webkit.org/show_bug.cgi?id=171073
<rdar://problem/31378524>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
2017-04-27 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: Add new GTK+ icons for instrument icons
https://bugs.webkit.org/show_bug.cgi?id=153892
<rdar://problem/24510460>
Reviewed by Joseph Pecoraro.
Add more free icons from art-libre symbolic and removed some
unused ones for the Web Inspector in GTK+.
* UserInterface/Images/gtk/Colors.png: Removed.
* UserInterface/Images/gtk/Colors@2x.png: Removed.
* UserInterface/Images/gtk/ColorsLarge.png: Removed.
* UserInterface/Images/gtk/ColorsLarge@2x.png: Removed.
* UserInterface/Images/gtk/Frames.png: Removed.
* UserInterface/Images/gtk/Frames@2x.png: Removed.
* UserInterface/Images/gtk/HeapAllocationsInstrument.svg: Added.
* UserInterface/Images/gtk/LayoutInstrument.svg: Added.
* UserInterface/Images/gtk/MemoryInstrument.svg: Added.
* UserInterface/Images/gtk/Network.png: Removed.
* UserInterface/Images/gtk/Network@2x.png: Removed.
* UserInterface/Images/gtk/NetworkInstrument.svg: Added.
* UserInterface/Images/gtk/NetworkLarge.png: Removed.
* UserInterface/Images/gtk/NetworkLarge@2x.png: Removed.
* UserInterface/Images/gtk/RenderingFramesInstrument.svg: Added.
* UserInterface/Images/gtk/Script.png: Removed.
* UserInterface/Images/gtk/Script@2x.png: Removed.
* UserInterface/Images/gtk/ScriptLarge.png: Removed.
* UserInterface/Images/gtk/ScriptLarge@2x.png: Removed.
* UserInterface/Images/gtk/ScriptsInstrument.svg: Added.
* UserInterface/Views/TimelineIcons.css:
(body:not(.mac-platform, .windows-platform) .network-icon .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .network-icon.large .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .layout-icon .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .layout-icon.large .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .script-icon .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .script-icon.large .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .rendering-frame-icon .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .memory-icon .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .heap-allocations-icon .icon): Deleted.
2017-04-27 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: gtk/NavigationItemCurleyBraces.svg is licensed under NonCommercial CC
https://bugs.webkit.org/show_bug.cgi?id=170902
Reviewed by Michael Catanzaro.
* UserInterface/Images/gtk/NavigationItemCurleyBraces.svg:
Replaced with new one created by me.
2017-04-27 Fujii Hironori <Hironori.Fujii@sony.com>
[GTK] Web Inspector: some SVG images are specified 'currentColor' incorrectly
https://bugs.webkit.org/show_bug.cgi?id=170977
Reviewed by Michael Catanzaro.
The keyword 'currentColor' is specifed manually in Bug 150602.
But, some SVG images are specified incorrectly.
* UserInterface/Images/gtk/NavigationItemTypes.svg: Do not stroke
with currentColor, but fill.
* UserInterface/Images/gtk/UpDownArrows.svg: Ditto.
2017-04-27 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Remote inspector should support inspecting targets with previous version of backend commands
https://bugs.webkit.org/show_bug.cgi?id=171267
Reviewed by Michael Catanzaro.
Allow to use data URLs for script-src.
* UserInterface/Main.html:
2017-04-25 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r209882): Web Inspector: Command-G does not work in the console
https://bugs.webkit.org/show_bug.cgi?id=170555
<rdar://problem/31481247>
Reviewed by Brian Burg.
Command-G didn't work in the console when the console content view was in focus. It only
worked when the search input field was focused.
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView.prototype.findBannerRevealPreviousResult):
(WebInspector.LogContentView.prototype.highlightPreviousSearchMatch): Added.
(WebInspector.LogContentView.prototype.findBannerRevealNextResult):
(WebInspector.LogContentView.prototype.highlightNextSearchMatch): Added.
Re-introduce highlightPreviousSearchMatch and highlightNextSearchMatch methods that were
removed in r209882.
2017-04-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Sorting by Priority Column hides all rows in the datagrid (uncaught exception)
https://bugs.webkit.org/show_bug.cgi?id=171312
<rdar://problem/31828554>
Reviewed by Brian Burg.
* UserInterface/Models/Resource.js:
(WebInspector.Resource.comparePriority):
Provide a helper for compariting NetworkPriority enum values.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView):
(WebInspector.NetworkGridContentView.prototype.dataGridSortComparator):
* UserInterface/Views/NetworkTimelineView.js:
(WebInspector.NetworkTimelineView.prototype.dataGridSortComparator):
Custom sort handler for priority.
2017-04-25 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r214863): Web Inspector: Uncaught Exception when losing focus from a selector field
https://bugs.webkit.org/show_bug.cgi?id=171254
<rdar://problem/31813959>
Reviewed by Joseph Pecoraro.
The event.relatedTarget of a blur event contains the element where focus moved to.
In some cases this can be null, such as if the user leaves the application window.
For example Command+Tab to switch to another application.
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WebInspector.CSSStyleDeclarationSection.prototype._handleSelectorPaste):
2017-04-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Open the new bug page in the new tab
https://bugs.webkit.org/show_bug.cgi?id=171253
Reviewed by Joseph Pecoraro.
* UserInterface/Debug/UncaughtExceptionReporter.js:
(createErrorSheet):
2017-04-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: "Space" localized string is not loaded in combined and minified builds
https://bugs.webkit.org/show_bug.cgi?id=171283
<rdar://problem/30871371>
Reviewed by Brian Burg.
In combined and minified builds, the document.write() to load the
localized strings script doesn't happen before the KeyboardShortcut
global code in Main.js evaluates, so there is no UIString because
window.localizedStrings hasn't populated yet. Since this is the only
instance, populate the display UIString lazily and provide warnings
in minified builds if this happens.
* UserInterface/Base/LoadLocalizedStrings.js:
(WebInspector.UIString):
Provide a warning if a UIString was attempted before the strings have loaded.
* UserInterface/Base/Main.js:
(WebInspector.loaded):
For this rare instance, populate the display name of the string when we are
sure strings have loaded.
* UserInterface/Models/KeyboardShortcut.js:
Revert the UIString here, but note that it will be populated later.
* UserInterface/Models/Resource.js:
(WebInspector.Resource.prototype.setCachedResponseBodySize):
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._statusImageContextmenu):
Address console.asserts not ending in semicolon warnings produced during
optimized builds. Without semicolons they are not stripped.
2017-04-25 Fujii Hironori <Hironori.Fujii@sony.com>
Web Inspector: TypeError:​ sourceCodeLocation.populateLiveDisplayLocationTooltip is not a function
https://bugs.webkit.org/show_bug.cgi?id=171259
Reviewed by Joseph Pecoraro.
The first argument of WebInspector.createSourceCodeLocationLink
should be SourceCodeLocation type.
* UserInterface/Views/TimelineDataGridNode.js:
(WebInspector.TimelineDataGridNode.prototype.createCellContent):
Pass 'callFrame.sourceCodeLocation' instead of 'value' to the
first argument.
2017-04-24 Matt Baker <mattbaker@apple.com>
Web Inspector: DOM/XHR breakpoint sections should be collapsed by default
https://bugs.webkit.org/show_bug.cgi?id=170931
Reviewed by Brian Burg.
Set the default collapsed parameter for DOM / XHR Breakpoints sections,
and auto-expand the DOM Breakpoints when a breakpoint is added.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype._domBreakpointAddedOrRemoved):
2017-04-21 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Add titles to Network grid items for easier reading when text overflows
https://bugs.webkit.org/show_bug.cgi?id=170792
Reviewed by Brian Burg.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView):
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
(WebInspector.ResourceTimelineDataGridNode.prototype._cachedCellContent):
Do not add a title if the text is an em-dash, as that title will not convey any information.
2017-04-21 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Don't show the Search tab if it's open and matches the representedObject
https://bugs.webkit.org/show_bug.cgi?id=168709
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WebInspector.handlePossibleLinkClick):
(WebInspector.openURL):
(WebInspector.showSourceCode):
(WebInspector.showOriginalUnformattedSourceCodeLocation):
(WebInspector.showOriginalOrFormattedSourceCodeLocation):
(WebInspector.showOriginalOrFormattedSourceCodeTextRange):
(WebInspector._frameWasAdded):
(WebInspector.createSourceCodeLocationLink):
(WebInspector.linkifyLocation):
(WebInspector.linkifyElement):
Add `options` parameter to provide greater customization. Also fix some style issues.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView.prototype.hasRepresentedObject): Deleted.
* UserInterface/Views/NetworkSidebarPanel.js:
(WebInspector.NetworkSidebarPanel.prototype.hasRepresentedObject): Deleted.
* UserInterface/Views/NetworkTabContentView.js:
(WebInspector.NetworkTabContentView.prototype.canShowRepresentedObject):
* UserInterface/Views/SearchTabContentView.js:
(WebInspector.SearchTabContentView.prototype.canShowRepresentedObject):
Ensure that the Search tab can only display resources that it has entries for in its view.
Also rework the way in which this is determined.
* UserInterface/Controllers/BreakpointPopoverController.js:
(WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems):
* UserInterface/Protocol/InspectorFrontendAPI.js:
(InspectorFrontendAPI.showMainResourceForFrame):
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WebInspector.CSSStyleDeclarationSection.prototype.refresh):
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.tokenTrackingControllerHighlightedRangeWasClicked.showRangeInSourceCode):
(WebInspector.CSSStyleDeclarationTextEditor.tokenTrackingControllerHighlightedRangeWasClicked):
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WebInspector.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty):
* UserInterface/Views/ConsoleMessageView.js:
(WebInspector.ConsoleMessageView.prototype._linkifyLocation):
* UserInterface/Views/DOMDetailsSidebarPanel.js:
(WebInspector.DOMDetailsSidebarPanel.prototype._mouseWasClicked):
* UserInterface/Views/DOMTreeContentView.js:
(WebInspector.DOMTreeContentView.prototype._mouseWasClicked.followLink):
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._showCustomElementDefinition):
* UserInterface/Views/DebuggerDashboardView.js:
(WebInspector.DebuggerDashboardView.prototype._rebuildLocation):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
(WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonGotoArrow):
* UserInterface/Views/ErrorObjectView.js:
(WebInspector.ErrorObjectView.makeSourceLinkWithPrefix):
* UserInterface/Views/EventListenerSectionGroup.js:
(WebInspector.EventListenerSectionGroup.prototype._functionTextOrLink):
* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populatePreview):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPathRow):
* UserInterface/Views/ObjectTreeBaseTreeElement.js:
(WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
(WebInspector.ObjectTreeBaseTreeElement):
* UserInterface/Views/ProbeSetDetailsSection.js:
(WebInspector.ProbeSetDetailsSection.prototype._updateLinkElement):
* UserInterface/Views/ProfileDataGridNode.js:
(WebInspector.ProfileDataGridNode.prototype._displayContent):
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRelatedResourcesSection):
(WebInspector.ResourceDetailsSidebarPanel.prototype._goToRequestDataClicked):
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype._dataGridNodeGoToArrowClicked):
* UserInterface/Views/RulesStyleDetailsPanel.js:
(WebInspector.RulesStyleDetailsPanel.prototype.refresh.insertMediaOrInheritanceLabel):
* UserInterface/Views/SearchSidebarPanel.js:
(WebInspector.SearchSidebarPanel.prototype._treeElementDoubleClick):
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
* UserInterface/Views/SourceCodeTimelineTimelineDataGridNode.js:
(WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype._createNameCellContent):
* UserInterface/Views/TimelineDataGrid.js:
(WebInspector.TimelineDataGrid.prototype._popoverCallStackTreeSelectionDidChange):
* UserInterface/Views/TimelineDataGridNode.js:
(WebInspector.TimelineDataGridNode.prototype.createCellContent):
* UserInterface/Views/VisualStyleSelectorTreeItem.js:
(WebInspector.VisualStyleSelectorTreeItem.prototype.populateContextMenu):
Ensure that the Search tab is never shown from links generated by these functions.
Also do the same for the Network tab in some cases.
* UserInterface/Views/NetworkTimelineView.js:
(WebInspector.NetworkTimelineView.prototype.canShowContentViewForTreeElement): Deleted.
(WebInspector.NetworkTimelineView.prototype.showContentViewForTreeElement): Deleted.
Drive-by cleanup: remove dead code.
2017-04-20 Matt Baker <mattbaker@apple.com>
Web Inspector: Add regular expression support to XHR breakpoints
https://bugs.webkit.org/show_bug.cgi?id=170099
<rdar://problem/31558082>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
New strings for the Add XHR Breakpoint popover.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WebInspector.DOMDebuggerManager):
(WebInspector.DOMDebuggerManager.prototype.addXHRBreakpoint):
Update for new XHRBreakpoint constructor.
(WebInspector.DOMDebuggerManager.prototype._updateXHRBreakpoint):
Set `isRegex` flag.
* UserInterface/Main.html:
New files for CodeMirror mode and breakpoint popover.
* UserInterface/Models/XHRBreakpoint.js:
Breakpoint can be of type Text or RegularExpression.
(WebInspector.XHRBreakpoint):
(WebInspector.XHRBreakpoint.prototype.get type):
(WebInspector.XHRBreakpoint.prototype.get serializableInfo):
* UserInterface/Views/CodeMirrorRegexMode.css: Added.
(.cm-s-default .cm-regex-character-set):
(.cm-s-default .cm-regex-character-set-negate):
(.cm-s-default :matches(.cm-regex-escape, .cm-regex-escape-2, .cm-regex-escape-3)):
(.cm-s-default :matches(.cm-regex-group, .cm-regex-lookahead)):
(.cm-s-default .cm-regex-quantifier):
(.cm-s-default :matches(.cm-regex-literal, .cm-regex-special, .cm-regex-backreference)):
Colors for regular expression syntax highlighting. The regex mode emits
more class names than we have separate colors for, allowing for further
customization in the future.
* UserInterface/Views/CodeMirrorRegexMode.js: Added.
(characterSetTokenizer):
(consumeEscapeSequence):
(tokenBase):
New CodeMirror mode for highlighting "text/x-regex" content.
* UserInterface/Views/DebuggerSidebarPanel.js:
Use new popover type for creating XHR breakpoints.
(WebInspector.DebuggerSidebarPanel.prototype._addXHRBreakpointButtonClicked):
(WebInspector.DebuggerSidebarPanel.prototype.willDismissPopover):
(WebInspector.DebuggerSidebarPanel):
* UserInterface/Views/XHRBreakpointPopover.css: Added.
(.popover .xhr-breakpoint-content):
(.popover .xhr-breakpoint-content > .editor-wrapper):
(.popover .xhr-breakpoint-content > .editor-wrapper > .editor):
(body[dir=ltr] .popover .xhr-breakpoint-content > .editor-wrapper > .editor):
(body[dir=rtl] .popover .xhr-breakpoint-content > .editor-wrapper > .editor):
(.popover .xhr-breakpoint-content > .editor-wrapper > .editor > .CodeMirror):
(.popover .xhr-breakpoint-content > .editor-wrapper > .editor > .CodeMirror-scroll):
Styles for new popover.
* UserInterface/Views/XHRBreakpointPopover.js: Added.
New popover class. Includes a picker for selecting breakpoint type
(Text or RegularExpression), and has an improved popover caption. Input
field style and placeholder text changes based on the breakpoint type.
(WebInspector.XHRBreakpointPopover):
(WebInspector.XHRBreakpointPopover.prototype.get result):
(WebInspector.XHRBreakpointPopover.prototype.get type):
(WebInspector.XHRBreakpointPopover.prototype.get value):
(WebInspector.XHRBreakpointPopover.prototype.show.addOption):
(WebInspector.XHRBreakpointPopover.prototype.show):
(WebInspector.XHRBreakpointPopover.prototype._createEditor):
(WebInspector.XHRBreakpointPopover.prototype._updateEditor):
(WebInspector.XHRBreakpointPopover.prototype._presentOverTargetElement):
* UserInterface/Views/XHRBreakpointTreeElement.js:
(WebInspector.XHRBreakpointTreeElement):
Differentiate breakpoint type by enclosing subtitle in either double quotes
or regex-literal delimiters, depending on the type of breakpoint.
2017-04-19 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r209882): Web Inspector: Console's filter bar has text search field, but the next/previous buttons don't do anything
https://bugs.webkit.org/show_bug.cgi?id=170556
<rdar://problem/31481755>
Reviewed by Matt Baker.
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView.prototype.performSearch):
Update numberOfResults setter, which sets "disabled" attribute to false when numberOfResults > 0.
2017-04-18 Matt Baker <mattbaker@apple.com>
Web Inspector: XHR breakpoints shouldn't be cleared from the sidebar on reload
https://bugs.webkit.org/show_bug.cgi?id=170930
Reviewed by Joseph Pecoraro.
XHR breakpoints aren't associated with the main resource, and shouldn't
be cleared from the manager or sidebar UI When the main resource changes.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WebInspector.DOMDebuggerManager.prototype._mainResourceDidChange):
* UserInterface/Controllers/XHRBreakpointTreeController.js:
(WebInspector.XHRBreakpointTreeController):
(WebInspector.XHRBreakpointTreeController.prototype._mainResourceDidChange): Deleted.
2017-04-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network columns don't get saved when Web Inspector is closed
https://bugs.webkit.org/show_bug.cgi?id=170373
<rdar://problem/31386336>
Reviewed by Matt Baker.
* UserInterface/Views/DataGrid.js:
(WebInspector.DataGrid.prototype.setColumnVisible):
(WebInspector.DataGrid.prototype._contextMenuInHeader):
The context menu was often passing `undefined` as the visible value
which would cause the setting to not be saved appropriately. Ensure
we always get an explicit boolean.
2017-04-17 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Use `text-align: start` for DataGrid headers
https://bugs.webkit.org/show_bug.cgi?id=170871
Reviewed by Matt Baker.
`text-align: start` didn't work for th elements.
It was fixed in <webkit.org/b/141417>.
* UserInterface/Views/DataGrid.css:
(.data-grid th):
(body[dir=ltr] .data-grid th): Deleted.
(body[dir=rtl] .data-grid th): Deleted.
2017-04-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Doesn't show size of compressed content correctly
https://bugs.webkit.org/show_bug.cgi?id=155112
<rdar://problem/25006728>
Reviewed by Alex Christensen and Timothy Hatcher.
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
Set an exact size.
* UserInterface/Models/Resource.js:
(WebInspector.Resource):
(WebInspector.Resource.prototype.get requestHeadersTransferSize):
(WebInspector.Resource.prototype.get requestBodyTransferSize):
(WebInspector.Resource.prototype.get responseHeadersTransferSize):
(WebInspector.Resource.prototype.get responseBodyTransferSize):
(WebInspector.Resource.prototype.get cachedResponseBodySize):
(WebInspector.Resource.prototype.get size):
(WebInspector.Resource.prototype.get networkEncodedSize):
(WebInspector.Resource.prototype.get networkDecodedSize):
(WebInspector.Resource.prototype.get networkTotalTransferSize):
(WebInspector.Resource.prototype.get estimatedNetworkEncodedSize):
(WebInspector.Resource.prototype.get estimatedTotalTransferSize):
(WebInspector.Resource.prototype.get compressed):
(WebInspector.Resource.prototype.updateForResponse):
(WebInspector.Resource.prototype.updateWithMetrics):
(WebInspector.Resource.prototype.setCachedResponseBodySize):
(WebInspector.Resource.prototype.increaseSize):
(WebInspector.Resource.prototype.increaseTransferSize):
(WebInspector.Resource.prototype.get encodedSize): Deleted.
(WebInspector.Resource.prototype.get transferSize): Deleted.
Be more explicit with size getters.
(WebInspector.Resource.prototype.updateWithMetrics):
If we receive the size metrics, update the specific metric values.
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshCompressed):
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshDecodedSize):
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshTransferSize):
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype.get data):
Show exact values if we have them, otherwise fall back to the calculated
values during loading.
2017-04-17 Jon Davis <jond@apple.com>
Web Inspector: new icon for Disable Caches button in Network Tab
https://bugs.webkit.org/show_bug.cgi?id=170196
Reviewed by Joseph Pecoraro.
* UserInterface/Images/IgnoreCaches.svg: Added.
Added new art for the Disable Caches button.
* UserInterface/Images/gtk/IgnoreCaches.svg: Added.
Used GTK's StepOver.svg for fallback art for GTK.
* UserInterface/Images/NavigationItemClear.svg:
Improved artwork for Clear Console button icon to match the weight and
style of the Disable Caches button icon.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView):
2017-04-17 Matt Baker <mattbaker@apple.com>
Web Inspector: Enabled state of "All Requests" XHR breakpoint not restored correctly
https://bugs.webkit.org/show_bug.cgi?id=170916
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WebInspector.DOMDebuggerManager):
Set breakpoint with backend agent, if enabled.
2017-04-17 Matt Baker <mattbaker@apple.com>
Web Inspector: Show pause reason for "All Requests" XHR breakpoint
https://bugs.webkit.org/show_bug.cgi?id=170895
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
Add generic pause reason text: "Requesting: <url>".
* UserInterface/Controllers/DOMDebuggerManager.js:
(WebInspector.DOMDebuggerManager.prototype.xhrBreakpointForURL):
Relocated helper method from the sidebar.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
Add an XHR breakpoint tree element when pause data contains a breakpoint
URL, otherwise just add a generic text row.
2017-04-17 Matt Baker <mattbaker@apple.com>
Web Inspector: XHR breakpoints restored from settings do not appear in the sidebar
https://bugs.webkit.org/show_bug.cgi?id=170890
Reviewed by Joseph Pecoraro.
Need to check for existing breakpoints when XHRBreakpointTreeController
is constructed, instead of just listening for added breakpoints.
* UserInterface/Controllers/XHRBreakpointTreeController.js:
(WebInspector.XHRBreakpointTreeController):
(WebInspector.XHRBreakpointTreeController.prototype._xhrBreakpointAdded):
(WebInspector.XHRBreakpointTreeController.prototype._addTreeElement):
2017-04-14 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: WebSockets: messages with non-latin letters are displayed incorrectly
https://bugs.webkit.org/show_bug.cgi?id=170760
Reviewed by Joseph Pecoraro.
Add payloadLength property, which is used to display size. When payloadLength is unavailable,
it is calculated from payloadData by Web Inspector frontend.
This fixes <webkit.org/b/170609> Web Inspector: WebSockets: Transferred size is incorrect.
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype._webSocketFrameReceivedOrSent):
* UserInterface/Models/WebSocketResource.js:
(WebInspector.WebSocketResource.prototype.addFrame):
2017-04-13 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Implement autocompletion for CSS variables
https://bugs.webkit.org/show_bug.cgi?id=154441
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype.completionControllerCompletionsNeeded):
Add CSS variables to the list of matching completions based on those defined in the current
node's computed style.
2017-04-13 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: No context menu available via ENABLE_INSPECTOR_SERVER
https://bugs.webkit.org/show_bug.cgi?id=170705
Reviewed by Joseph Pecoraro.
Reintroduce old SoftContextMenu class (removed in r157278) and apply various fixes:
- Remove legacy globals and prototype extensions.
- Align JS/CSS style with current front-end code.
- Update UI and fix UX to replicate the macOS native context menu.
* Scripts/copy-user-interface-resources.pl:
Add copyright line for Sony Interactive Entertainment.
* UserInterface/Base/InspectorFrontendHostStub.js:
(WebInspector.InspectorFrontendHostStub.prototype.showContextMenu):
Use SoftContextMenu.
* UserInterface/Main.html:
Include SoftContextMenu.
* UserInterface/Views/SoftContextMenu.css: Added.
(.soft-context-menu-glass-pane):
(.soft-context-menu):
(.soft-context-menu > .item):
(.soft-context-menu > .item.disabled):
(.soft-context-menu > .item.highlighted):
(.soft-context-menu > .item > .checkmark):
(.soft-context-menu > .item > .label):
(.soft-context-menu > .item > .submenu-arrow):
(.soft-context-menu > .separator):
(.soft-context-menu > .separator > .line):
* UserInterface/Views/SoftContextMenu.js: Added.
(WebInspector.SoftContextMenu):
(WebInspector.SoftContextMenu.prototype.show):
(WebInspector.SoftContextMenu.prototype._consumeEvent):
(WebInspector.SoftContextMenu.prototype._parentGlassPaneElement):
(WebInspector.SoftContextMenu.prototype._createMenuItem):
(WebInspector.SoftContextMenu.prototype._createSeparator):
(WebInspector.SoftContextMenu.prototype._repositionMenuOnScreen):
(WebInspector.SoftContextMenu.prototype._showSubMenu):
(WebInspector.SoftContextMenu.prototype._hideSubMenu):
(WebInspector.SoftContextMenu.prototype._menuItemContextMenu):
(WebInspector.SoftContextMenu.prototype._menuItemMouseDown):
(WebInspector.SoftContextMenu.prototype._menuItemMouseUp):
(WebInspector.SoftContextMenu.prototype._menuItemMouseOver):
(WebInspector.SoftContextMenu.prototype._menuItemMouseOut):
(WebInspector.SoftContextMenu.prototype._menuKeyDown):
(WebInspector.SoftContextMenu.prototype._glassPaneMouseDown):
(WebInspector.SoftContextMenu.prototype._focus):
(WebInspector.SoftContextMenu.prototype._triggerAction):
(WebInspector.SoftContextMenu.prototype._highlightMenuItem):
(WebInspector.SoftContextMenu.prototype._highlightPrevious):
(WebInspector.SoftContextMenu.prototype._highlightNext):
(WebInspector.SoftContextMenu.prototype._discardMenu):
(WebInspector.SoftContextMenu.prototype._discardSubMenus):
2017-04-13 Brian Burg <bburg@apple.com>
Web Inspector: RTL: goto arrow is floated to the wrong side
https://bugs.webkit.org/show_bug.cgi?id=170816
Reviewed by Matt Baker.
Float it to the other side if necessary.
* UserInterface/Views/Main.css:
(.go-to-link):
(body[dir=ltr] .go-to-link:not(.dont-float)):
(body[dir=rtl] .go-to-link:not(.dont-float)):
2017-04-12 Dan Bernstein <mitz@apple.com>
[Mac] Future-proof .xcconfig files
https://bugs.webkit.org/show_bug.cgi?id=170802
Reviewed by Tim Horton.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/Version.xcconfig:
2017-04-11 Matt Baker <mattbaker@apple.com>
Web Inspector: checkboxes in Settings screen use inappropriate layout
https://bugs.webkit.org/show_bug.cgi?id=166993
<rdar://problem/30002272>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
New checkbox setting strings.
* UserInterface/Main.html:
New settings view classes.
* UserInterface/Views/GeneralSettingsView.js: Added.
(WebInspector.GeneralSettingsView):
(WebInspector.GeneralSettingsView.prototype.initialLayout):
Move settings UI creation from SettingsTabContentView.
* UserInterface/Views/SettingEditor.js: Added.
Basic setting editor UI for the following input types: checkbox,
number, and select. In the future it may be useful to include
additional types, such as radio buttons.
(WebInspector.SettingEditor):
(WebInspector.SettingEditor.createForSetting):
(WebInspector.SettingEditor.prototype.get element):
(WebInspector.SettingEditor.prototype.get type):
(WebInspector.SettingEditor.prototype.get label):
(WebInspector.SettingEditor.prototype.get value):
(WebInspector.SettingEditor.prototype.set value):
(WebInspector.SettingEditor.prototype._createEditorElement):
* UserInterface/Views/SettingsGroup.js: Added.
A container holding editors for one or more WebInspector.Settings.
Every editor belongs to a group. SettingsView provides convenience
methods for adding settings and groups, so create instances directly
shouldn't normally be necessary.
(WebInspector.SettingsGroup):
(WebInspector.SettingsGroup.prototype.get element):
(WebInspector.SettingsGroup.prototype.addSetting):
(WebInspector.SettingsGroup.prototype.addCustomSetting):
* UserInterface/Views/SettingsTabContentView.css:
Refactored styles to more closely match Xcode settings UI.
Eliminated redundant use of "setting" from CSS class names.
(.content-view.settings):
(.content-view.settings .navigation-bar .item.radio.button.text-only):
(.content-view.settings .navigation-bar .item.radio.button.text-only.selected):
(.content-view.settings > .settings-view > .separator):
(.content-view.settings > .settings-view > .container):
(.content-view.settings > .settings-view > .container > .title):
(body[dir=ltr] .content-view.settings > .settings-view > .container > .title):
(body[dir=rtl] .content-view.settings > .settings-view > .container > .title):
(.content-view.settings > .settings-view > .container > .editor-group):
(.content-view.settings > .settings-view > .container > .editor-group > .editor input):
(.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
(body[dir=ltr] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
(body[dir=rtl] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
(.content-view.settings > .settings-view > .container > .editor-group > .editor select):
(.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
(body[dir=ltr] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
(body[dir=rtl] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
(.content-view.settings > .header): Deleted.
(.content-view.settings > .separator): Deleted.
(.content-view.settings > .setting-container): Deleted.
(.content-view.settings > .setting-container.combined): Deleted.
(.content-view.settings > .setting-container > .setting-name): Deleted.
(body[dir=ltr] .content-view.settings > .setting-container > .setting-name): Deleted.
(body[dir=rtl] .content-view.settings > .setting-container > .setting-name): Deleted.
(.content-view.settings > .setting-container > .setting-value-controller): Deleted.
(.content-view.settings > .setting-container > .setting-value-controller input): Deleted.
(.content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]): Deleted.
(body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]): Deleted.
(body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]): Deleted.
(.content-view.settings > .setting-container > .setting-value-controller select): Deleted.
(.content-view.settings > .setting-container > .setting-value-controller input[type="number"]): Deleted.
(body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]): Deleted.
(body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]): Deleted.
* UserInterface/Views/SettingsTabContentView.js:
To better organize the growing number of settings, multiple settings views
are now supported, with a navigation bar for switching between them. For
now there is a single "General" setting view, and and the navigation bar
is hidden. Adding a second view will cause the bar to be shown.
(WebInspector.SettingsTabContentView):
(WebInspector.SettingsTabContentView.prototype.get type):
(WebInspector.SettingsTabContentView.prototype.get selectedSettingsView):
(WebInspector.SettingsTabContentView.prototype.set selectedSettingsView):
(WebInspector.SettingsTabContentView.prototype.addSettingsView):
(WebInspector.SettingsTabContentView.prototype._navigationItemSelected):
(WebInspector.SettingsTabContentView.prototype.layout): Deleted.
No longer needed.
* UserInterface/Views/SettingsView.js: Added.
Base class for displaying editing UI for a collection of related
WebInspector.Setting objects.
(WebInspector.SettingsView):
(WebInspector.SettingsView.prototype.get identifier):
(WebInspector.SettingsView.prototype.get displayName):
A string suitable for display in a NavigationBar showing a list of
SettingsViews (e.g. "General", "Text Editing", "Fonts & Colors", etc).
(WebInspector.SettingsView.prototype.addSetting):
Add UI for a setting, consisting of a title, an editor appropriate for
the setting's value type, and optional label and formatting options.
For example:
addSetting("Setting 1:", new WebInspector.Setting(…, true), "Item one")
addSetting("Setting 2:", new WebInspector.Setting(…, 1), "units")
will create a checkbox and number input field:
Setting 1: [x] Item one
Setting 2: [ 1] units
(WebInspector.SettingsView.prototype.addCustomSetting):
Add UI for a specific editor type, with optional formatting options.
A setting can be updated in response to changes in the editor's value.
(WebInspector.SettingsView.prototype.addGroup):
Add a group, for listing multiple settings under one title. For example:
group = addGroup("Title:")
group.addSetting(new WebInspector.Setting(…, true), "Item one")
group.addSetting(new WebInspector.Setting(…, false), "Item two")
will create two checkboxes under the same title:
Title: [x] Item one
[ ] Item two
(WebInspector.SettingsView.prototype.addSeparator):
Add vertical space between two settings or groups.
2017-04-10 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: WebSockets: Don't clip data in the data grid
https://bugs.webkit.org/show_bug.cgi?id=170559
Reviewed by Timothy Hatcher.
Long lines without spaces should be broken down into several lines instead of being ellipsized.
* UserInterface/Views/WebSocketContentView.css:
(.web-socket.content-view > .data-grid td.data-column,):
2017-04-10 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Placeholder text is clipped in the 'Enter Class Name' field at the bottom of Rules style sidebar in some localizations
https://bugs.webkit.org/show_bug.cgi?id=167641
<rdar://problem/26541953>
Reviewed by Joseph Pecoraro.
Make the "Enter Class Name" text field span the entire width of the Styles sidebar.
* UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
(.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class):
(.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
(.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > input[type="checkbox"]): Deleted.
(.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .add-class-icon): Deleted.
(.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class.active > .add-class-icon,): Deleted.
* UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
(WebInspector.CSSStyleDetailsSidebarPanel.prototype.initialLayout):
Remove the checkbox, which didn't do anything, and the plus icon. Make the "Enter Class Name" text field visible by default.
2017-04-10 Jon Lee <jonlee@apple.com>
Update localizable strings to "full screen" from "fullscreen"
https://bugs.webkit.org/show_bug.cgi?id=170675
rdar://problem/28207034
Reviewed by Antoine Quint.
* UserInterface/Models/ScriptTimelineRecord.js:
(WebInspector.ScriptTimelineRecord.EventType.displayName): For localizable strings, it should consistently be
"full screen" instead of "fullscreen".
2017-04-09 Devin Rousso <webkit@devinrousso.com>
Web Inspector: tabbing in Styles sidebar is broken when additional ":" and ";" are in the property value
https://bugs.webkit.org/show_bug.cgi?id=170184
Reviewed by Matt Baker.
New tests:
- inspector/unit-tests/text-utilities.html
* UserInterface/Base/TextUtilities.js: Added.
(WebInspector.rangeForNextCSSNameOrValue):
Consolidate logic for finding the next range to highlight in a CSS string given a starting index.
* UserInterface/Main.html:
* UserInterface/Test.html:
Include TextUtilities.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype._highlightNextNameOrValue):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._rangeForNextNameOrValue):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseUp):
Utilize TextUtilities for range-finding logic.
2017-04-08 Simon Fraser <simon.fraser@apple.com>
Unprefix CSS cursor values grab and grabbing
https://bugs.webkit.org/show_bug.cgi?id=170543
Reviewed by Jon Lee.
Sort the cursor autosuggestions to match the order in the spec, and add the unprefixed
grab and grabbing values.
* UserInterface/Models/CSSKeywordCompletions.js:
2017-04-07 Matt Baker <mattbaker@apple.com>
Web Inspector: DOM/XHR breakpoint tree elements shouldn't persist their represented objects
https://bugs.webkit.org/show_bug.cgi?id=170611
<rdar://problem/31506161>
Reviewed by Joseph Pecoraro.
Prevent tree elements for DOM and XHR breakpoints from persisting their
represented objects.
* UserInterface/Views/ContentView.js:
(WebInspector.ContentView.createFromRepresentedObject):
* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
2017-04-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Source Map Resources should show up in the Debugger Sources list
https://bugs.webkit.org/show_bug.cgi?id=170581
<rdar://problem/31269140>
Reviewed by Matt Baker.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel):
Include SourceMapResources in the DebuggerSidebar's Sources tree outline.
2017-04-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Show all headers in the Request Headers section of the Resource details sidebar
https://bugs.webkit.org/show_bug.cgi?id=16531
<rdar://problem/5712895>
Reviewed by Timothy Hatcher.
* UserInterface/Models/Resource.js:
(WebInspector.Resource.prototype.updateWithMetrics):
Update request headers if provided in metrics.
2017-04-06 Matt Baker <mattbaker@apple.com>
Web Inspector: Reorder Debugger tab sidebar panels: Scope Chain, Resource, Probes
https://bugs.webkit.org/show_bug.cgi?id=170418
<rdar://problem/31410771>
Reviewed by Timothy Hatcher.
Maintain the sidebar panel order defined by TabContentView when adding
and removing panels.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WebInspector.ContentBrowserTabContentView.prototype.showDetailsSidebarPanels):
Insert sidebar panel based on the panel order defined by TabContentView.
* UserInterface/Views/DebuggerTabContentView.js:
(WebInspector.DebuggerTabContentView):
* UserInterface/Views/Sidebar.js:
(WebInspector.Sidebar.prototype.addSidebarPanel):
Implemented as an insert at the end.
(WebInspector.Sidebar.prototype.insertSidebarPanel):
Allow inserting into the sidebar panel collection.
(WebInspector.Sidebar.prototype.removeSidebarPanel):
Remove unused return value.
2017-04-05 Matt Baker <mattbaker@apple.com>
Web Inspector: Probe values not showing in sidebar
https://bugs.webkit.org/show_bug.cgi?id=170143
Reviewed by Joseph Pecoraro.
Force the DataGrid to refresh its layout after adding a probe sample.
* UserInterface/Views/ProbeSetDataGrid.css:
(.details-section.probe-set .data-grid tr.data-updated):
(.details-section.probe-set .data-grid > tr.data-updated): Deleted.
Drive-by fix: selector didn't match any rows.
* UserInterface/Views/ProbeSetDataGrid.js:
(WebInspector.ProbeSetDataGrid.prototype._updateNodeForFrame):
2017-04-05 Matt Baker <mattbaker@apple.com>
Web Inspector: XHR breakpoints should be global
https://bugs.webkit.org/show_bug.cgi?id=170033
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
Shorten XHR breakpoint tree element "URL contains:" title to "URL".
* UserInterface/Controllers/DOMDebuggerManager.js:
Change storage of XHR breakpoints from a map to a simple array.
(WebInspector.DOMDebuggerManager):
(WebInspector.DOMDebuggerManager.prototype.get xhrBreakpoints):
(WebInspector.DOMDebuggerManager.prototype.addXHRBreakpoint):
Dispatch the "breakpoint added" event immediately after adding the
breakpoint, rather than waiting for it to resolve.
(WebInspector.DOMDebuggerManager.prototype.removeXHRBreakpoint):
(WebInspector.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
(WebInspector.DOMDebuggerManager.prototype._resolveXHRBreakpoint):
(WebInspector.DOMDebuggerManager.prototype._saveXHRBreakpoints):
(WebInspector.DOMDebuggerManager.prototype._mainResourceDidChange):
* UserInterface/Models/XHRBreakpoint.js:
An XHR breakpoint should not be associated with a particular document.
(WebInspector.XHRBreakpoint):
(WebInspector.XHRBreakpoint.prototype.get serializableInfo):
(WebInspector.XHRBreakpoint.prototype.saveIdentityToCookie):
(WebInspector.XHRBreakpoint.prototype.get documentURL): Deleted.
* UserInterface/Views/DebuggerSidebarPanel.css:
Use default emdash-separated title/subtitle style instead of the
custom "URL contains:" labeling.
(.sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle):
(.sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle:before): Deleted.
(body[dir=ltr] .sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle): Deleted.
(body[dir=rtl] .sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle): Deleted.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype.willDismissPopover):
(WebInspector.DebuggerSidebarPanel):
* UserInterface/Views/XHRBreakpointTreeElement.js:
(WebInspector.XHRBreakpointTreeElement):
2017-04-04 Brian Burg <bburg@apple.com>
Web Inspector: RTL: layout issues in Type Profiler popovers
https://bugs.webkit.org/show_bug.cgi?id=170467
Reviewed by Timothy Hatcher.
Flip some margins and padding. Remove the -1px leading margin for
the prototype disclosure button, as it is unnecessary and looks
(more) wrong when in RTL.
* UserInterface/Views/TypeTreeElement.css:
(.item.type-tree-element > .disclosure-button):
(.item.type-tree-element.prototype):
(body[dir=ltr] .item.type-tree-element.prototype):
(body[dir=rtl] .item.type-tree-element.prototype):
* UserInterface/Views/TypeTreeView.css:
(.tree-outline.type):
(body[dir=ltr] .tree-outline.type):
(body[dir=rtl] .tree-outline.type):
(.tree-outline.type li .empty-message):
(body[dir=ltr] .tree-outline.type li .empty-message):
(body[dir=rtl] .tree-outline.type li .empty-message):
2017-04-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include more Network information in Resource Details Sidebar
https://bugs.webkit.org/show_bug.cgi?id=170470
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
Updated localized strings.
* UserInterface/Models/Resource.js:
(WebInspector.Resource.displayNameForProtocol):
(WebInspector.Resource.displayNameForPriority):
Aggregate all display name helpers here.
* UserInterface/Views/DetailsSectionSimpleRow.js:
(WebInspector.DetailsSectionSimpleRow.prototype.get tooltip):
(WebInspector.DetailsSectionSimpleRow.prototype.set tooltip):
Allow setting a tooltip on the value.
* UserInterface/Views/NetworkGridContentView.css:
(.cache-type):
Cache type shows up in multiple places. Simplify the CSS to apply anywhere.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView):
* UserInterface/Views/NetworkTimelineView.js:
(WebInspector.NetworkTimelineView):
Updated column names.
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel):
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
(WebInspector.ResourceDetailsSidebarPanel.prototype._cachedRowValue):
Include more detail information in the sidebar.
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
(WebInspector.ResourceTimelineDataGridNode.prototype._displayNameForPriority): Deleted.
Use shared code for display names.
2017-04-04 Brian Burg <bburg@apple.com>
Web Inspector: RTL: fix alignment of close button shown while docked
https://bugs.webkit.org/show_bug.cgi?id=170472
Reviewed by Matt Baker.
* UserInterface/Views/Toolbar.css:
(.toolbar .control-section):
(body[dir=ltr] .toolbar .control-section):
(body[dir=rtl] .toolbar .control-section):
2017-04-04 Brian Burg <bburg@apple.com>
Web Inspector: RTL: layout issues in debugger dashboard, arrows are on wrong side
https://bugs.webkit.org/show_bug.cgi?id=170425
Reviewed by Devin Rousso.
We need to move the up/down dashboard arrows to the trailing side for RTL.
Clean up some messy spacing rules so that the source location does not
overlap the arrows or get too close to the function icon.
* UserInterface/Views/DashboardContainerView.css:
(.toolbar .dashboard):
(body[dir=ltr] .toolbar .dashboard):
(body[dir=rtl] .toolbar .dashboard):
(.dashboard-container .advance-arrow):
(body[dir=ltr] .dashboard-container .advance-arrow):
(body[dir=rtl] .dashboard-container .advance-arrow):
(.toolbar.label-only .dashboard-container .advance-arrow):
(body[dir=ltr] .toolbar.label-only .dashboard-container .advance-arrow):
(body[dir=rtl] .toolbar.label-only .dashboard-container .advance-arrow):
* UserInterface/Views/DebuggerDashboardView.css:
(.toolbar .dashboard.debugger):
(body[dir=ltr] .toolbar .dashboard.debugger):
(body[dir=rtl] .toolbar .dashboard.debugger):
(.dashboard.debugger .navigation-bar):
(body[dir=ltr] .dashboard.debugger .navigation-bar):
(body[dir=rtl] .dashboard.debugger .navigation-bar):
(.dashboard.debugger > .location):
(.dashboard.debugger > .location > :first-child):
(body[dir=ltr] .dashboard.debugger > .location > :last-child):
(body[dir=rtl] .dashboard.debugger > .location > :last-child):
(.dashboard.debugger > .location .function-icon):
(body[dir=ltr] .dashboard.debugger > .location .function-icon):
(body[dir=rtl] .dashboard.debugger > .location .function-icon):
(.dashboard.debugger > .location .go-to-link):
2017-04-03 Brian Burg <bburg@apple.com>
Web Inspector: RTL: results in Search navigation sidebar have misplaced highlights
https://bugs.webkit.org/show_bug.cgi?id=170292
Reviewed by Timothy Hatcher.
* UserInterface/Models/SourceCodeSearchMatchObject.js:
(WebInspector.SourceCodeSearchMatchObject.prototype.get className):
* UserInterface/Views/SearchIcons.css:
(.source-code-match .icon):
(.source-code-match-icon .icon): Deleted.
Remove -icon suffix from the class name since the class is attached to a result
and is not specific to the icon displayed within the result <li>.
* UserInterface/Views/SearchResultTreeElement.js:
(WebInspector.SearchResultTreeElement.truncateAndHighlightTitle):
Flip the leading and trailing context in RTL so that the highlight is not overflowed
to the left when too much context is included on the right side. Less context must be
used in RTL because we must not overflow to the right, as it may hide the result. And,
we don't know the exact starting character either as it may be overflowed to the right
as the user resizes the expanded sidebar larger or smaller. So show less context to
be conservative about never overflowing the highlighted result string.
* UserInterface/Views/SearchSidebarPanel.css:
(.sidebar > .panel.navigation.search .item.source-code-match .title):
When in RTL, show source code matches as LTR with text-align to right.
2017-04-03 Devin Rousso <webkit@devinrousso.com>
Web Inspector: clicking on the body of a CSS rule after editing the selector causes the section to disappear
https://bugs.webkit.org/show_bug.cgi?id=169803
Reviewed by Timothy Hatcher.
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WebInspector.CSSStyleDeclarationSection.prototype._handleKeyDown):
(WebInspector.CSSStyleDeclarationSection.prototype._handleBlur):
Keep the section marked as `_editorActive` if the action taken would still place focus
within the section (selector or properties). Doing so will prevent it from being removed.
2017-04-03 Brian Burg <bburg@apple.com>
Web Inspector: RTL: hierarchical path component labels should guess directionality based on content
https://bugs.webkit.org/show_bug.cgi?id=170298
Reviewed by Timothy Hatcher.
* UserInterface/Views/HierarchicalPathComponent.js:
(WebInspector.HierarchicalPathComponent):
Use dir="auto" since this will properly set 'unicode-bidi:isolate' for form elements too.
This is applied to the title label and to the <select> for the path component.
2017-04-03 Matt Baker <mattbaker@apple.com>
Web Inspector: Show additional pause reason details for DOM "subtree modified" breakpoint
https://bugs.webkit.org/show_bug.cgi?id=169479
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
New Pause Reason UI strings.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
Include a link for the target node when breaking for subtree modifications.
This is either the parent of a node being inserted, or a node that is
being removed.
2017-04-03 Devin Rousso <webkit@devinrousso.com>
Web Inspector: showing the Find banner doesn't immediately focus it
https://bugs.webkit.org/show_bug.cgi?id=169804
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
(WebInspector._focusChanged):
Slightly change the logic from <https://webkit.org/b/168119> (r213689) to not prevent a new
selection if the focus change target is an element from WebInspector.startEditing.
2017-04-03 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: WebSockets: Don't store binary frames in memory since they are never shown
https://bugs.webkit.org/show_bug.cgi?id=169649
<rdar://problem/31053069>
Reviewed by Brian Burg.
* UserInterface/Models/WebSocketResource.js:
(WebInspector.WebSocketResource.prototype.addFrame):
2017-04-03 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Preference for Auto Showing Scope Chain sidebar on pause
https://bugs.webkit.org/show_bug.cgi?id=149487
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype.layout):
Add WebInspector.Setting for showing Scope Chain on pause.
* UserInterface/Base/Main.js:
(WebInspector.showDebuggerTab):
(WebInspector._debuggerDidPause):
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
Modify parameters to use a dictionary of options instead of just a single value. In doing
so, add support for a value that will show the Scope Chain sidebar.
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings):
(.content-view.settings > .header):
Drive-by: add padding to bottom of Settings tab so that additional scroll space is mirrored.
2017-04-03 Brian Burg <bburg@apple.com>
Web Inspector: RTL: layout issues in call frame tree elements and async call stacks
https://bugs.webkit.org/show_bug.cgi?id=170419
Reviewed by Matt Baker.
* UserInterface/Views/CallFrameTreeElement.css:
(.tree-outline .item.call-frame .status):
(body[dir=ltr] .tree-outline .item.call-frame .status):
(body[dir=rtl] .tree-outline .item.call-frame .status):
Flip the current call frame indicator and make sure it sticks to the leading edge.
(.tree-outline .item.call-frame.async-boundary):
(body[dir=ltr] .tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary):
(body[dir=rtl] .tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary):
(.tree-outline .item.call-frame.async-boundary .icon):
(body[dir=ltr] .tree-outline .item.call-frame.async-boundary .icon):
(body[dir=rtl] .tree-outline .item.call-frame.async-boundary .icon):
Flip the icon's padding.
(.tree-outline .item.call-frame.async-boundary::after):
(body[dir=ltr] .tree-outline .item.call-frame.async-boundary::after):
(body[dir=rtl] .tree-outline .item.call-frame.async-boundary::after):
(.tree-outline .item.call-frame.async-boundary::before):
(body[dir=ltr] .tree-outline .item.call-frame.async-boundary::before):
(body[dir=rtl] .tree-outline .item.call-frame.async-boundary::before):
(.tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary): Deleted.
Fix the leading and trailing horizontal rules so they have correct spacing.
* UserInterface/Views/CallFrameView.css:
(.call-frame .icon): Remove redundant property.
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger .tree-outline.single-thread):
(body[dir=ltr] .sidebar > .panel.navigation.debugger .tree-outline.single-thread):
(body[dir=rtl] .sidebar > .panel.navigation.debugger .tree-outline.single-thread):
Fix the leading unindent for call tree frame elements.
2017-04-03 Matt Baker <mattbaker@apple.com>
Web Inspector: Elements tab: show indicators for hidden DOM breakpoints
https://bugs.webkit.org/show_bug.cgi?id=168761
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
New DOM breakpoint content menu item.
* UserInterface/Views/DOMTreeContentView.css:
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.subtree):
(.content-view.dom-tree .tree-outline.dom li.expanded .status-image.breakpoint.subtree):
New styles for collapsed breakpoint marker.
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement):
(WebInspector.DOMTreeElement.prototype.set breakpointStatus):
If the status change indicates the only breakpoint was added or removed,
update subtree breakpoint counts on the element's parent chain.
(WebInspector.DOMTreeElement.prototype.revealAndHighlight):
Reveal the tree element, and add a highlighted line animation
identical to the one used used by TextEditor.
(WebInspector.DOMTreeElement.prototype.subtreeBreakpointCountDidChange):
(WebInspector.DOMTreeElement.prototype.updateSelectionArea):
Selection area should be updated when animating the element highlight.
(WebInspector.DOMTreeElement.prototype.onreveal):
Animate highlight if needed.
(WebInspector.DOMTreeElement.prototype._updateBreakpointStatus):
(WebInspector.DOMTreeElement.prototype._statusImageClicked):
Do nothing when clicking the collapsed breakpoint marker.
(WebInspector.DOMTreeElement.prototype._statusImageContextmenu):
Add "Reveal Breakpoint" menu item. Reveals the first descendant
with at least one breakpoint.
(WebInspector.DOMTreeElement.prototype._highlightAnimationEnd):
* UserInterface/Views/DOMTreeOutline.css:
(@keyframes dom-tree-outline-highlight-fadeout):
(.highlight .selection-area):
Styles for highlight fade animation.
* UserInterface/Views/TreeElement.js:
(WebInspector.TreeElement.prototype.selfOrDescendant):
* UserInterface/Views/TreeOutline.js:
(WebInspector.TreeOutline.prototype.selfOrDescendant):
Find a node matching a predicate.
2017-04-03 Matt Baker <mattbaker@apple.com>
Web Inspector: DetailsSection should hide header "options" when collapsed
https://bugs.webkit.org/show_bug.cgi?id=170029
Reviewed by Timothy Hatcher.
* UserInterface/Views/DOMNodeDetailsSidebarPanel.css:
(.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
(.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners.collapsed > .header > .filter): Deleted.
DetailsSection is responsible for hiding options when collapsed.
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger .details-section.paused-reason.collapsed > .header > .options):
* UserInterface/Views/DetailsSection.css:
(body[dir=ltr] .details-section > .header > .options,):
(body[dir=ltr] .details-section > .header::before,):
(.details-section.collapsed > .header > .options):
(body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow),): Deleted.
(.details-section.collapsed > .header > label): Deleted.
Removed unnecessary rules. The "options" class covers these cases.
* UserInterface/Views/DetailsSection.js:
(WebInspector.DetailsSection.prototype.get titleElement):
(WebInspector.DetailsSection.prototype.set titleElement):
Added title element customization so that the hack used by ProbeSetDetailsSection
to get a link into the title can be removed. Yuck!
* UserInterface/Views/ProbeSetDetailsSection.js:
(WebInspector.ProbeSetDetailsSection):
(WebInspector.ProbeSetDetailsSection.prototype._updateLinkElement):
Use the new DetailsSection title element setter.
* UserInterface/Views/VisualStyleDetailsPanel.css:
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > .options):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > .visual-style-section-clear): Deleted.
(.sidebar > .panel.details.css-style .visual > .details-section .details-section.collapsed > .header > .visual-style-section-clear,): Deleted.
Remove the "visual-style-section-clear" class, as it's no longer needed.
* UserInterface/Views/VisualStyleDetailsPanel.js:
(WebInspector.VisualStyleDetailsPanel.prototype._generateSection.createOptionsElement):
(WebInspector.VisualStyleDetailsPanel.prototype._generateSection):
2017-04-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: "Space" is not localizable in Timelines record button tooltips
https://bugs.webkit.org/show_bug.cgi?id=170420
<rdar://problem/30871371>
Reviewed by Timothy Hatcher.
* UserInterface/Base/LoadLocalizedStrings.js:
(WebInspector.unlocalizedString):
(WebInspector.UIString):
* UserInterface/Base/Main.js:
Move UIString / unlocalizedString to LoadLocalizedString.js.
They may be needed before Main.js has introduced it.
* UserInterface/Test/Test.js:
Provide a default implementaiton of unlocalizedString.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/KeyboardShortcut.js:
Most keys use a symbol to represent the key. "Space" was the one
exception, so use a localized string.
2017-04-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Tooltip for close tab button should match Safari
https://bugs.webkit.org/show_bug.cgi?id=170417
<rdar://problem/31378423>
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/GeneralTabBarItem.js:
(WebInspector.GeneralTabBarItem):
Updated tooltip to match Safari's most descriptive tooltip.
2017-04-03 Devin Rousso <webkit@devinrousso.com>
REGRESSION (r214354): Web Inspector: WebSocket connection icon obscures close content view icon
https://bugs.webkit.org/show_bug.cgi?id=170104
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ResourceTreeElement.css:
(.item.resource.resource-type-websocket .status > .ready-state):
(.item.resource.resource-type-websocket:not(.selected) .status .ready-state.open):
(.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .ready-state.open):
(body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.open):
(.item.resource.resource-type-websocket:not(.selected) .status .ready-state.connecting):
(.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .ready-state.connecting):
(body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.connecting):
(.item.resource.resource-type-websocket .status > div): Deleted.
(.item.resource.resource-type-websocket:not(.selected) .status .open): Deleted.
(.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .open): Deleted.
(body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .open): Deleted.
(.item.resource.resource-type-websocket:not(.selected) .status .connecting): Deleted.
(.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .connecting): Deleted.
(body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .connecting): Deleted.
* UserInterface/Views/WebSocketResourceTreeElement.js:
(WebInspector.WebSocketResourceTreeElement.prototype._updateConnectionStatus):
Apply an additional CSS class to the connection indicator element so that the styles can be
applied more specifically to just that element.
2017-04-01 Jon Lee <jonlee@apple.com>
Add missing text styles
https://bugs.webkit.org/show_bug.cgi?id=170295
rdar://problem/30219503
Reviewed by Dean Jackson.
* UserInterface/Models/CSSKeywordCompletions.js: Update keyword completions
2017-04-01 Dan Bernstein <mitz@apple.com>
Localizable strings files are out of date
https://bugs.webkit.org/show_bug.cgi?id=170383
Reviewed by Tim Horton.
Ran update-webkit-localizable-strings.
* Localizations/en.lproj/localizedStrings.js:
2017-03-30 Matt Baker <mattbaker@apple.com>
Web Inspector: Styles sidebar warning icon appears inside property value text
https://bugs.webkit.org/show_bug.cgi?id=170281
Reviewed by Timothy Hatcher.
Style rule warning icon should always come before the property name,
regardless of which property part (name/value) the error is for. This
information is conveyed by the red strikethrough, which is applied to
the property name, value, or both.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
2017-03-29 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: WebSockets: Messages log should remain being scrolled to the bottom when a new message is added
https://bugs.webkit.org/show_bug.cgi?id=170090
Reviewed by Matt Baker.
Adding many Web Socket messages quickly can create a performance bottleneck. Batch addition of DataGrid nodes
using requestAnimationFrame, and scroll to the bottom of the DataGrid at most once per a batch update.
* UserInterface/Views/WebSocketContentView.js:
(WebInspector.WebSocketContentView):
(WebInspector.WebSocketContentView.prototype.shown):
(WebInspector.WebSocketContentView.prototype.hidden):
(WebInspector.WebSocketContentView.prototype._updateFramesSoon):
Batch WebSocketContentView DOM modifications using requestAnimationFrame.
(WebInspector.WebSocketContentView.prototype._updateFrames):
(WebInspector.WebSocketContentView.prototype._addFrame):
(WebInspector.WebSocketContentView.prototype.addFrame): Deleted.
Make addFrame method private since it isn't used anywhere outside of this class.
(WebInspector.WebSocketContentView.prototype._updateState): Deleted.
Make _updateState a part of _updateFramesSoon.
2017-03-29 Sam Brodkin <isam@apple.com>
Web Inspector: Network tab content view is blank after reload
https://bugs.webkit.org/show_bug.cgi?id=168029
Reviewed by Brian Burg.
* UserInterface/Views/NetworkSidebarPanel.js:
(WebInspector.NetworkSidebarPanel.prototype._networkTimelineReset):
showDefaultContentView() which shows networkGridView in the contentView was not being called
when the NetworkSidebarPanel was not visible. Removing the if statement always shows the
networkGridView which fixes the bug. This wouldn't be easy to regression test.
2017-03-28 Brian Burg <bburg@apple.com>
Web Inspector: RTL: keyboard shortcuts with directionality need to be flipped (forward/back, etc)
https://bugs.webkit.org/show_bug.cgi?id=165761
Reviewed by Matt Baker.
Original patch by Devin Rousso.
* UserInterface/Views/ContentBrowser.js:
(WebInspector.ContentBrowser):
* UserInterface/Views/TabBrowser.js:
(WebInspector.TabBrowser):
Flip the functionality of keyboard shortcuts when in RTL so that the action of
pressing the left or right arrows/curly braces matches what happens when the
corresponding left or right buttons are clicked.
* UserInterface/Views/DataGrid.js:
(WebInspector.DataGrid.prototype._keyDown):
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView.prototype._keyDown):
* UserInterface/Views/TreeOutline.js:
(WebInspector.TreeOutline.prototype._treeKeyDown):
Flip the Left and Right keyboard shortcuts to expand/collapse the selected item when in RTL.
2017-03-28 Brian Burg <bburg@apple.com>
Web Inspector: Add "Disable Caches" option that only applies to the inspected page while Web Inspector is open
https://bugs.webkit.org/show_bug.cgi?id=169865
<rdar://problem/31250573>
Reviewed by Joseph Pecoraro.
Hook up a button in the Network tab to WebCore::Page's resourceCachingDisabled flag.
If it is active, resource loads are subject to a cache policy that never uses a cached response.
* Localizations/en.lproj/localizedStrings.js:
Add localized strings.
* UserInterface/Base/Main.js:
(WebInspector.loaded):
Add a setting for whether to disable resource caching and inform the backend
of our preference. If someone changes the setting, tell the backend again.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView):
(WebInspector.NetworkGridContentView.prototype.get navigationItems):
(WebInspector.NetworkGridContentView.prototype._resourceCachingDisabledSettingChanged):
(WebInspector.NetworkGridContentView.prototype._toggleDisableResourceCache):
Add a new activatable navigation item that toggles disableResourceCaching for the inspected page.
* UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
* Versions/Inspector-iOS-10.0.json:
* Versions/Inspector-iOS-10.3.json:
* Versions/Inspector-iOS-7.0.json:
* Versions/Inspector-iOS-8.0.json:
* Versions/Inspector-iOS-9.0.json:
* Versions/Inspector-iOS-9.3.json:
Update legacy backend commands to remove the old/broken Network.setCacheDisabled command.
2017-03-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Inspecting a Main Resource that is JS/JSON does not format / syntax highlight it properly
https://bugs.webkit.org/show_bug.cgi?id=166862
<rdar://problem/29835977>
Reviewed by Brian Burg.
* UserInterface/Models/Resource.js:
(WebInspector.Resource.prototype.get syntheticMIMEType):
Don't override the mime type for Document resources. They should always
have a mime type and we should use whatever it is.
2017-03-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Unable to Format JSON Request Data
https://bugs.webkit.org/show_bug.cgi?id=170189
Reviewed by Matt Baker.
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype._startWorkerPrettyPrint):
When we are viewing request data we are looking at a TextResourceContentView
which has a TextEditor without a delegate. In these cases we can just assume
a JavaScript Program. In the majority of cases this will typically be JSON
data, and either Program or Module will highlight and format as expected.
2017-03-27 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Option-clicking the close tab button should close all other tabs
https://bugs.webkit.org/show_bug.cgi?id=169046
Reviewed by Matt Baker.
* UserInterface/Views/TabBar.js:
(WebInspector.TabBar.prototype._handleClick):
2017-03-27 Devin Rousso <webkit@devinrousso.com>
Web Inspector: The inspector sidebar has weird sub-column sizing issues
https://bugs.webkit.org/show_bug.cgi?id=161966
Reviewed by Joseph Pecoraro.
* UserInterface/Views/Sidebar.js:
(WebInspector.Sidebar.prototype.resizerDragEnded):
(WebInspector.Sidebar.prototype._recalculateWidth):
Ensure that the selected sidebar panel is notified of the size change (sizeDidChange) when
the resizer drag ends.
* UserInterface/Views/DetailsSectionDataGridRow.js:
(WebInspector.DetailsSectionDataGridRow.prototype.sizeDidChange):
* UserInterface/Views/ProbeSetDetailsSection.js:
(WebInspector.ProbeSetDetailsSection.prototype.sizeDidChange):
Add/update the sizeDidChange protected function.
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WebInspector.ComputedStyleDetailsPanel.prototype.initialLayout):
(WebInspector.ComputedStyleDetailsPanel.prototype.sizeDidChange):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel.prototype.sizeDidChange):
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WebInspector.LayerTreeDetailsSidebarPanel.prototype.sizeDidChange):
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel.prototype.sizeDidChange):
* UserInterface/Views/ProbeDetailsSidebarPanel.js:
(WebInspector.ProbeDetailsSidebarPanel.prototype.sizeDidChange):
Update the contained DataGrid elements whenever the sidebar size changes so that the resizer
elements are positioned correctly.
* UserInterface/Views/View.js:
(WebInspector.View.prototype.updateLayoutIfNeeded):
* UserInterface/Views/TimelineOverview.js:
(WebInspector.TimelineOverview.prototype.updateLayoutIfNeeded):
* UserInterface/Views/TimelineRuler.js:
(WebInspector.TimelineRuler.prototype.updateLayoutIfNeeded):
Ensure the layoutReason is also propagated.
2017-03-27 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Resource Details Sidebar displays previous image metrics when viewing resource where content load failed
https://bugs.webkit.org/show_bug.cgi?id=170065
<rdar://problem/27081591>
Reviewed by Matt Baker.
* UserInterface/Models/Resource.js:
(WebInspector.Resource.prototype.getImageSize.imageDidLoad):
(WebInspector.Resource.prototype.getImageSize.requestContentFailure):
(WebInspector.Resource.prototype.getImageSize):
If the requestContent failed, return a null image size.
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshImageSizeSection.hideImageSection):
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshImageSizeSection):
If the callback is called with a null size, hide the image size section.
2017-03-24 Brian Burg <bburg@apple.com>
Web Inspector: RTL: number scripts are used inconsistently throughout the UI
https://bugs.webkit.org/show_bug.cgi?id=168290
Reviewed by Joseph Pecoraro.
Original patch by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js: Add new string for FPS bars.
* UserInterface/Base/Utilities.js:
(value.d):
(value):
Localize %d formatted values by default. If that's not desired, then you need to stringify
the number outside of String.format and Number.abbreviate and pass it as %s instead.
Also add a global variable for zwsp (zero-width space) and use it in DataGridNode.
* UserInterface/Views/ConsoleMessageView.js:
(WebInspector.ConsoleMessageView.prototype._renderRepeatCount): Abbreviate the repeat count,
and cause it to be localized.
* UserInterface/Views/DataGridNode.js:
(WebInspector.DataGridNode.prototype.createCellContent):
If we don't know anything about a cell's data other than that it's a number,
run the number through toLocaleString().
* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
Don't localize @%d tags for snapshot objects since this is not done elsewhere in the UI.
* UserInterface/Views/IndexedDatabaseDetailsSidebarPanel.js: Localize integer version number.
(WebInspector.IndexedDatabaseDetailsSidebarPanel.prototype.layout):
* UserInterface/Views/MemoryTimelineView.js:
(WebInspector.MemoryTimelineView.prototype._updateMaxComparisonLegend): Use Number.percentageString().
* UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
(WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateDividers.createDividerAtPosition):
(WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateDividers):
Localize "%d fps" markers.
* UserInterface/Views/TimelineOverview.js:
(WebInspector.TimelineOverview.prototype._viewModeDidChange):
Localize frame label numbers.
2017-03-24 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Adding a WebSocket message may change the currently selected resource
https://bugs.webkit.org/show_bug.cgi?id=170036
<rdar://problem/31231463>
Reviewed by Joseph Pecoraro.
Calling increaseSize on a resource may cause a WebInspector.TimelineDataGrid#TimelineDataGrid#_refreshDirtyDataGridNodes call.
Make sure _refreshDirtyDataGridNodes preserves selection of a treeElement.
* UserInterface/Views/TimelineDataGrid.js:
(WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
Re-attaching treeElement causes it to lose selection. Select it again after re-attaching.
2017-03-24 Devin Rousso <webkit@devinrousso.com>
Web Inspector: add context menu item to log content of WebSocket frame
https://bugs.webkit.org/show_bug.cgi?id=169945
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/WebSocketContentView.js:
(WebInspector.WebSocketContentView):
(WebInspector.WebSocketContentView.prototype.addFrame):
(WebInspector.WebSocketContentView.prototype._addRow):
Rework the way CSS classes are applied so the isOutgoing and isText flags can also be passed
to the WebSocketDataGridNode. This is necessary because a non-text frame shouldn't be able
to be logged to the console.
* UserInterface/Views/WebSocketDataGridNode.js:
(WebInspector.WebSocketDataGridNode.prototype.appendContextMenuItems):
2017-03-24 Devin Rousso <webkit@devinrousso.com>
Web Inspector: allow users to click links in inline/user-agent styles
https://bugs.webkit.org/show_bug.cgi?id=170054
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype.set style):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._updateJumpToSymbolTrackingMode):
(WebInspector.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
(WebInspector.CSSStyleDeclarationTextEditor.prototype.tokenTrackingControllerNewHighlightCandidate):
Always enable the token tracking controller, but only act on hovered/clicked token if it is
a link or the owner style declaration has a source code location (for jumping to the Resource).
2017-03-24 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Indicate whether a WebSocket connection is open or close
https://bugs.webkit.org/show_bug.cgi?id=168948
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
Added WebSocketResourceTreeElement.js and SpanningDataGridNode.js.
* UserInterface/Views/WebSocketContentView.js:
(WebInspector.WebSocketContentView):
(WebInspector.WebSocketContentView.prototype.shown):
(WebInspector.WebSocketContentView.prototype.hidden):
(WebInspector.WebSocketContentView.prototype._updateState):
Listen to changes in the readyState and add a SpanningDataGridNode when the current state
becomes Closed.
* UserInterface/Views/WebSocketResourceTreeElement.js: Added.
(WebInspector.WebSocketResourceTreeElement.prototype.onattach):
(WebInspector.WebSocketResourceTreeElement.prototype.ondetach):
(WebInspector.WebSocketResourceTreeElement.prototype._updateConnectionStatus):
Listen to changes in the readyState and add/remove the status element depending on the
current state:
- Closed: show no status indicator
- Connecting: show a small circle with a yellow color
- Open: show a small circle with a green color
* UserInterface/Views/ResourceTreeElement.css:
(.item.resource.resource-type-websocket .status > div):
(.item.resource.resource-type-websocket:not(.selected) .status .open):
(.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .open):
(body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .open):
(.item.resource.resource-type-websocket:not(.selected) .status .connecting):
(.tree-outline:not(:focus, .force-focus) .item.resource.resource-type-websocket.selected .status .connecting):
(body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .connecting):
* UserInterface/Views/FrameTreeElement.js:
(WebInspector.FrameTreeElement):
Use WebSocketResourceTreeElement as the constructor for WebSocket resources.
* UserInterface/Views/SpanningDataGridNode.js: Added.
(WebInspector.SpanningDataGridNode.prototype.createCells):
Creates a single cell that spans all the columns (via CSS colspan) of the parent DataGrid.
* UserInterface/Views/DataGrid.css:
(.data-grid td.spanning):
Center content of spanning nodes and prevent user interaction.
* UserInterface/Views/DataGridNode.js:
(WebInspector.DataGridNode.prototype.createCell):
Add additional checks so that a DataGridNode can be created with a column identifier that is
not in the DataGrid. This is used by SpanningGridDataNode, as it shouldn't match one single
column in the DataGrid since it spans them all.
* UserInterface/Views/GeneralTreeElement.js:
(WebInspector.GeneralTreeElement.prototype.ondetach):
* UserInterface/Views/BreakpointTreeElement.js:
(WebInspector.BreakpointTreeElement.prototype.ondetach):
* UserInterface/Views/DOMBreakpointTreeElement.js:
(WebInspector.DOMBreakpointTreeElement.prototype.ondetach):
* UserInterface/Views/XHRBreakpointTreeElement.js:
(WebInspector.XHRBreakpointTreeElement.prototype.ondetach):
Add ondetach function (with super calls) for future use.
2017-03-23 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Cache type is not styled correctly in Timelines tab
https://bugs.webkit.org/show_bug.cgi?id=170032
Reviewed by Matt Baker.
* UserInterface/Views/NetworkGridContentView.css:
(.content-view:matches(.network, .network-grid) > .data-grid .cache-type):
(.content-view:matches(.network, .network-grid) > .data-grid:matches(:focus, .force-focus) tr.selected .cache-type):
(.content-view.network-grid > .data-grid .cache-type): Deleted.
(.content-view.network-grid > .data-grid:matches(:focus, .force-focus) tr.selected .cache-type): Deleted.
The different network grids have different class names. Handle both.
2017-03-23 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Editing local storage keys/values starts with truncated strings
https://bugs.webkit.org/show_bug.cgi?id=169896
Reviewed by Brian Burg.
* UserInterface/Views/DataGrid.css:
(.data-grid td.editing > div):
* UserInterface/Views/DataGrid.js:
(WebInspector.DataGrid.prototype._editingCancelled):
div.cell-content is removed because the <td> itself is contenteditable (using -webkit-user-modify:read-write-plaintext-only),
not the inner div.cell-content. Re-create div.cell-content after commiting (by pressing Enter) or canceling (by pressing Esc)
since it may get removed while editing.
2017-03-22 Matt Baker <mattbaker@apple.com>
Web Inspector: Clicking DOM breakpoint marker should enable/disable breakpoints
https://bugs.webkit.org/show_bug.cgi?id=169856
<rdar://problem/31133090>
Reviewed by Joseph Pecoraro.
Clicking DOM breakpoint marker should enable/disable breakpoints,
matching the behavior of the marker's context menu:
- If one or more breakpoints are disabled, click enables all
- If all breakpoints are enabled, click disables all
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._updateBreakpointStatus):
(WebInspector.DOMTreeElement.prototype._statusImageClicked):
2017-03-20 Devin Rousso <webkit@devinrousso.com>
Web Inspector: RTL: minor layout issues in Breakpoint Editor popover
https://bugs.webkit.org/show_bug.cgi?id=169765
Reviewed by Brian Burg.
* UserInterface/Controllers/BreakpointPopoverController.js:
(WebInspector.BreakpointPopoverController.prototype._createPopoverContent):
Fix typo.
* UserInterface/Views/BreakpointActionView.css:
(body[dir=ltr] .breakpoint-action-button-container):
(body[dir=rtl] .breakpoint-action-button-container):
(:matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)):
(body[dir=ltr] :matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)):
(body[dir=rtl] :matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)):
(.breakpoint-action-block-body > .description):
(body[dir=ltr] .breakpoint-action-block-body > .description):
(body[dir=rtl] .breakpoint-action-block-body > .description):
(.breakpoint-action-block-body > input):
(.breakpoint-action-button-container): Deleted.
(.breakpoint-action-append-button, .breakpoint-action-remove-button): Deleted.
* UserInterface/Views/BreakpointActionView.js:
(WebInspector.BreakpointActionView.prototype._updateBody):
Manually apply `dir="ltr"` to the description element to force proper rendering.
* UserInterface/Views/BreakpointPopoverController.css:
(.popover .edit-breakpoint-popover-content):
(.popover .edit-breakpoint-popover-content > table > tr > th):
(#edit-breakpoint-popover-ignore):
(body[dir=ltr] :matches(#edit-breakpoint-popover-ignore, #edit-breakpoint-popover-auto-continue)):
(body[dir=rtl] :matches(#edit-breakpoint-popover-ignore, #edit-breakpoint-popover-auto-continue)):
(#edit-breakpoint-popoover-auto-continue): Deleted.
2017-03-20 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Icon next to "An error occurred..." message changes size when Inspector window is resized
https://bugs.webkit.org/show_bug.cgi?id=169901
Reviewed by Brian Burg.
* UserInterface/Views/Main.css:
(.message-text-view.error::before):
2017-03-20 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Clicking on Clear Network Items icon throws an exception if timing popover is visible
https://bugs.webkit.org/show_bug.cgi?id=169852
<rdar://problem/31132652>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar):
(WebInspector.ResourceTimelineDataGridNode):
2017-03-20 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r187873): Web Inspector: When resizing, prevent DataGrid columns from collapsing entirely
https://bugs.webkit.org/show_bug.cgi?id=169899
Reviewed by Joseph Pecoraro.
* UserInterface/Views/DataGrid.js:
(WebInspector.DataGrid.prototype.resizerDragging):
leftMinimum and rightMaximum variables were always NaN because this.ColumnResizePadding is undefined.
2017-03-20 Matt Baker <mattbaker@apple.com>
Web Inspector: Pseudo-class markers overlap DOM breakpoints and disclosure triangle
https://bugs.webkit.org/show_bug.cgi?id=169850
<rdar://problem/31132335>
Reviewed by Joseph Pecoraro.
DOMTreeContentView should always have at least 7px of gutter space to
accomodate pseudo-class markers. When DOM breakpoints are visible the
gutter size is increased so breakpoints and markers do not overlap.
* UserInterface/Views/DOMTreeContentView.css:
(.content-view.dom-tree .tree-outline.dom):
(.content-view.dom-tree.show-gutter .tree-outline.dom):
(body[dir=ltr] .content-view.dom-tree .tree-outline.dom):
(body[dir=rtl] .content-view.dom-tree .tree-outline.dom):
(body[dir=ltr] .content-view.dom-tree.show-gutter .tree-outline.dom): Deleted.
(body[dir=rtl] .content-view.dom-tree.show-gutter .tree-outline.dom): Deleted.
* UserInterface/Views/DOMTreeOutline.css:
(.content-view.dom-tree.show-gutter .tree-outline.dom):
Change pseudo-class marker indent when showing DOM breakpoint gutter.
(body[dir=ltr] .tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
Drive-by fix: copy paste error.
2017-03-19 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r212910): Active call frame status icon has incorrect left margin
https://bugs.webkit.org/show_bug.cgi?id=169862
Reviewed by Brian Burg.
* UserInterface/Views/CallFrameTreeElement.css:
(.tree-outline .item.call-frame .status):
(body[dir=ltr] .tree-outline .item.call-frame .status):
(body[dir=rtl] .tree-outline .item.call-frame .status):
2017-03-18 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Empty attribute added to a DOM tree outline element should not add whitespace within the tag
https://bugs.webkit.org/show_bug.cgi?id=139623
Reviewed by Brian Burg.
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._attributeEditingCommitted):
If the `newText` after editing has no content, remove the element for that attribute.
2017-03-18 Devin Rousso <webkit@devinrousso.com>
Web Inspector: add keyboard shortcut to clear timeline records
https://bugs.webkit.org/show_bug.cgi?id=132485
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/TimelineRecordingContentView.js:
(WebInspector.TimelineRecordingContentView):
(WebInspector.TimelineRecordingContentView.prototype.handleClearShortcut):
2017-03-17 Devin Rousso <webkit@devinrousso.com>
Web Inspector: wrong filename when saving resource from ResourceImageContentView
https://bugs.webkit.org/show_bug.cgi?id=54454
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ResourceContentView.js:
(WebInspector.ResourceContentView.prototype.get supportsSave):
(WebInspector.ResourceContentView.prototype.get saveData):
* UserInterface/Views/TextResourceContentView.js:
(WebInspector.TextResourceContentView.prototype.get supportsSave): Deleted.
Add save data getter to the parent class, so that both Images and Fonts can be saved.
* UserInterface/Views/Resource.js:
(WebInspector.Resource.prototype.canRequestContent):
Drive-by: remove unused function.
2017-03-16 Devin Rousso <webkit@devinrousso.com>
Web Inspector: memory category timelines would look better with ruler tick-aligned guides
https://bugs.webkit.org/show_bug.cgi?id=158100
Reviewed by Joseph Pecoraro.
* UserInterface/Views/MemoryTimelineView.css:
(.timeline-view.memory > .content > .details):
(.timeline-view.memory > .content > .details > .timeline-ruler):
(body[dir=ltr] .timeline-view.memory > .content > .details > .timeline-ruler):
(body[dir=rtl] .timeline-view.memory > .content > .details > .timeline-ruler):
Make the TimelineRuler absolutely positioned so it can use the full height of the view,
providing enough space for the markers to be visible.
2017-03-16 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Console Evaluation links in the Console should not show normally
https://bugs.webkit.org/show_bug.cgi?id=157483
Reviewed by Matt Baker.
* UserInterface/Models/CallFrame.js:
(WebInspector.CallFrame):
(WebInspector.CallFrame.prototype.get isConsoleEvaluation):
(WebInspector.CallFrame.fromDebuggerPayload):
(WebInspector.CallFrame.fromPayload):
Move console evaluation check to the constructor for consistency.
* UserInterface/Views/ConsoleMessageView.js:
(WebInspector.ConsoleMessageView.prototype._appendLocationLink):
* UserInterface/Views/StackTraceView.js:
(WebInspector.StackTraceView):
Only add CallFrameView elements if the corresponding CallFame is not a console evaluation.
2017-03-16 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r213691): Saving DOM breakpoints broken after refactoring
https://bugs.webkit.org/show_bug.cgi?id=169779
Reviewed by Joseph Pecoraro.
Use correct method: _saveBreakpoints -> _saveDOMBreakpoints.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WebInspector.DOMDebuggerManager.prototype.addDOMBreakpoint):
Remove check before saving to be consistent with similar code in
DebuggerManager and DOMDebuggerManager.
2017-03-16 Devin Rousso <webkit@devinrousso.com>
Web Inspector: add "Save Selected" context menu item to Console
https://bugs.webkit.org/show_bug.cgi?id=151837
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WebInspector.saveDataToFile):
Allow data to be saved without a provided URL. It will default to localized "Untitled".
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView.prototype._handleContextMenuEvent):
2017-03-16 Devin Rousso <webkit@devinrousso.com>
Web Inspector: RTL: selected frame indicator is not positioned correctly
https://bugs.webkit.org/show_bug.cgi?id=169763
Reviewed by Matt Baker.
* UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:
(WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateFrameMarker):
(WebInspector.RenderingFrameTimelineOverviewGraph.prototype._mouseClicked):
Treat the current mouse position (event.pageX) as a negative value when in RTL, meaning that
the delta movement from the starting position is flipped.
* UserInterface/Views/TimelineRuler.css:
(body[dir=ltr] .timeline-ruler > .header > .divider,):
(body[dir=rtl] .timeline-ruler > .header > .divider,):
(.timeline-ruler > .header > .divider):
(.timeline-ruler > .header > .divider > .label):
(body[dir=ltr] .timeline-ruler > .header > .divider > .label):
(body[dir=rtl] .timeline-ruler > .header > .divider > .label):
(.timeline-ruler > .markers > .divider):
(.timeline-ruler > .markers > .marker):
(body[dir=ltr] .timeline-ruler > .markers > .marker):
(body[dir=rtl] .timeline-ruler > .markers > .marker):
(.timeline-ruler > .markers > .marker::before):
(body[dir=ltr] .timeline-ruler > .markers > .marker::before):
(body[dir=rtl] .timeline-ruler > .markers > .marker::before):
(body[dir=ltr] .timeline-ruler > .markers > .marker.current-time):
(body[dir=rtl] .timeline-ruler > .markers > .marker.current-time):
(.timeline-ruler > .markers > .marker.current-time::before):
(.timeline-ruler > .markers > .marker.current-time): Deleted.
(.timeline-ruler > .selection-handle):
(body[dir=ltr] .timeline-ruler > .selection-handle.left):
(body[dir=rtl] .timeline-ruler > .selection-handle.left):
(body[dir=ltr] .timeline-ruler > .selection-handle.right):
(body[dir=rtl] .timeline-ruler > .selection-handle.right):
Drive-by: add CSS variable for clarity.
2017-03-16 Devin Rousso <webkit@devinrousso.com>
Web Inspector: RTL: filter mode icon in Debugger sidebar is misaligned
https://bugs.webkit.org/show_bug.cgi?id=169766
Reviewed by Matt Baker.
* UserInterface/Views/FilterBar.css:
(.filter-bar > .navigation-bar > .item):
(body[dir=ltr] .filter-bar > .navigation-bar > .item):
(body[dir=rtl] .filter-bar > .navigation-bar > .item):
2017-03-16 Matt Baker <mattbaker@apple.com>
Web Inspector: Refactoring: remove DebuggerTreeElement class
https://bugs.webkit.org/show_bug.cgi?id=169697
Reviewed by Devin Rousso.
Remove unnecessary class DebuggerTreeElement from TreeElement class hierarchy.
The `sourceCodeLocation` property on IssueMessage and Breakpoint (the debugger
objects) can be tested for generically using TreeElement.prototype.representedObject.
* UserInterface/Main.html:
Remove file.
* UserInterface/Views/BreakpointTreeElement.js:
* UserInterface/Views/IssueTreeElement.js:
Change base class to GeneralTreeElement.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint):
(WebInspector.DebuggerSidebarPanel.prototype._compareTreeElements):
(WebInspector.DebuggerSidebarPanel.prototype._addIssue):
(WebInspector.DebuggerSidebarPanel.prototype._compareDebuggerTreeElements): Deleted.
Renamed to just "_compareTreeElements".
* UserInterface/Views/DebuggerTreeElement.js: Removed.
2017-03-16 Devin Rousso <webkit@devinrousso.com>
Web Inspector: RTL: goto arrow for source locations is pointing wrong way in Timeline data grids
https://bugs.webkit.org/show_bug.cgi?id=169764
Reviewed by Matt Baker.
* UserInterface/Views/DataGrid.css:
(body[dir=rtl] .data-grid td .go-to-arrow):
2017-03-16 Brian Burg <bburg@apple.com>
Web Inspector: RTL: add FindBanner support for RTL layout
https://bugs.webkit.org/show_bug.cgi?id=168723
Reviewed by Timothy Hatcher.
Due to the large number of CSS tricks used by this widget, adding RTL
support involves changing a large number of rules. The important parts:
- Use '.segmented.{previous,next}-result' instead of '.segmented.
{left,right}', this makes the style rules way less confusing for RTL.
- Flip icons so icons look like "< >" but actions are reversed.
- Get rid of the weird expanding button divider. This is impossible
to mirror with the existing adjacent sibling combinator, and it does
not match the system appearance. Just replace the mini-divider with a
full divider and remove related dynamic rules that trigger on :active.
- Always keep the button divider between next/previous on the rightmost
button, to avoid subtle differences between LTR and RTL.
- Fix some mistakes where we weren't using --border-color and also
didn't adjust the handcoded border color for the inactive window case.
* UserInterface/Views/FindBanner.css:
(.find-banner):
(body[dir=ltr] .find-banner > :first-child,):
(body[dir=ltr] .find-banner > :last-child,):
(.find-banner > input[type="search"]):
(body[dir=ltr] .find-banner > input[type="search"]):
(body[dir=rtl] .find-banner > input[type="search"]):
(.find-banner > button:active:not(:disabled)):
(.find-banner > button.segmented):
(.find-banner > button.segmented.previous-result):
(body[dir=ltr] .find-banner > button.segmented.previous-result):
(body[dir=rtl] .find-banner > button.segmented.previous-result):
(body[dir=ltr] .find-banner > button.segmented.previous-result > .glyph):
(body[dir=rtl] .find-banner > button.segmented.previous-result > .glyph):
(body[dir=ltr] .find-banner > button.segmented.previous-result:active:not(:disabled) > .glyph):
(body[dir=rtl] .find-banner > button.segmented.previous-result:active:not(:disabled) > .glyph):
(.find-banner > button.segmented.next-result):
(body[dir=ltr] .find-banner > button.segmented.next-result):
(body[dir=rtl] .find-banner > button.segmented.next-result):
(body[dir=ltr] .find-banner > button.segmented.next-result > .glyph):
(body[dir=rtl] .find-banner > button.segmented.next-result > .glyph):
(body[dir=ltr] .find-banner > button.segmented.next-result:active:not(:disabled) > .glyph):
(body[dir=rtl] .find-banner > button.segmented.next-result:active:not(:disabled) > .glyph):
(.find-banner.console-find-banner > input[type="search"]):
(body[dir=ltr] .find-banner.console-find-banner > input[type="search"]):
(body[dir=rtl] .find-banner.console-find-banner > input[type="search"]):
(body[dir=ltr] .find-banner.console-find-banner > input[type="search"]::-webkit-textfield-decoration-container):
(body[dir=rtl] .find-banner.console-find-banner > input[type="search"]::-webkit-textfield-decoration-container):
(.find-banner > :first-child): Deleted.
(.find-banner > :last-child): Deleted.
(.find-banner > button.segmented.left): Deleted.
(.find-banner > button:not(:active).segmented.right:before): Deleted.
(.find-banner > button.segmented.left:active + button.segmented.right,): Deleted.
(.find-banner > button.segmented.left:active + button.segmented.right:before): Deleted.
(.find-banner > button.segmented.left > .glyph): Deleted.
(.find-banner > button.segmented.left:active:not(:disabled) > .glyph): Deleted.
(.find-banner > button.segmented.right): Deleted.
(.find-banner > button.segmented.right > .glyph): Deleted.
(.find-banner > button.segmented.right:active:not(:disabled) > .glyph): Deleted.
(.find-banner.console-find-banner > input[type="search"]::-webkit-textfield-decoration-container): Deleted.
* UserInterface/Views/FindBanner.js:
(WebInspector.FindBanner):
Change left and right to logical names for the buttons, and inline
some style classes with single uses.
2017-03-15 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Selecting text in the console does not do what I expect
https://bugs.webkit.org/show_bug.cgi?id=169570
Reviewed by Matt Baker.
* UserInterface/Views/ConsoleMessageView.css:
(.console-message-text > span > :matches(.console-message-enclosed, .console-message-preview, .console-message-preview-divider)):
(.console-message .console-message-location):
(.console-message-location.call-frame):
Prevent text selection on anything other than the message text. The other information that
is not selectable can still be copied by selecting the message itself and copying.
2017-03-15 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: WebSockets: Update Arrow Up icon to fit in with the rest of our iconography
https://bugs.webkit.org/show_bug.cgi?id=169696
<rdar://problem/31073748>
Reviewed by Matt Baker.
* UserInterface/Images/ArrowUp.svg:
* UserInterface/Images/gtk/ArrowUp.svg:
2017-03-15 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Add icons for SVG Image cluster path components
https://bugs.webkit.org/show_bug.cgi?id=169687
Reviewed by Joseph Pecoraro.
* UserInterface/Images/Image.svg: Added.
* UserInterface/Images/Source.svg: Added.
* UserInterface/Images/gtk/Image.svg: Added.
* UserInterface/Images/gtk/Source.svg: Added.
* UserInterface/Views/PathComponentIcons.css:
(.image-icon .icon):
(.source-icon .icon):
* UserInterface/Views/SVGImageResourceClusterContentView.js:
(WebInspector.SVGImageResourceClusterContentView):
2017-03-15 Devin Rousso <webkit@devinrousso.com>
Web Inspector: RTL: flip Memory timelines
https://bugs.webkit.org/show_bug.cgi?id=169694
Reviewed by Brian Burg.
* UserInterface/Views/MemoryCategoryView.css:
(body[dir=rtl] .memory-category-view > .graph):
2017-03-15 Joseph Pecoraro <pecoraro@apple.com>
JSContext Inspector: NetworkAgent may be unavailable
https://bugs.webkit.org/show_bug.cgi?id=169691
Reviewed by Brian Burg.
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
Check that NetworkAgent even exists. An augmented JSContext may have Resources
without having a NetworkAgent.
2017-03-15 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r213622): Web Inspector: DataGrid headers should NOT be centered
https://bugs.webkit.org/show_bug.cgi?id=169645
<rdar://problem/31051520>
Reviewed by Matt Baker.
* UserInterface/Views/DataGrid.css:
(.data-grid th):
(body[dir=ltr] .data-grid th):
(body[dir=rtl] .data-grid th):
2017-03-15 Devin Rousso <webkit@devinrousso.com>
Web Inspector: SVG image content view should toggle between image and source
https://bugs.webkit.org/show_bug.cgi?id=16079
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Views/ResourceClusterContentView.js:
(WebInspector.ResourceClusterContentView.prototype.get responseContentView):
Show the SVG cluster content view if the MIME type matches an SVG file.
* UserInterface/Views/SVGImageResourceClusterContentView.js: Added.
(WebInspector.SVGImageResourceClusterContentView):
(WebInspector.SVGImageResourceClusterContentView.prototype.get resource):
(WebInspector.SVGImageResourceClusterContentView.prototype.get selectionPathComponents):
(WebInspector.SVGImageResourceClusterContentView.prototype.shown):
(WebInspector.SVGImageResourceClusterContentView.prototype.closed):
(WebInspector.SVGImageResourceClusterContentView.prototype.saveToCookie):
(WebInspector.SVGImageResourceClusterContentView.prototype.restoreFromCookie):
(WebInspector.SVGImageResourceClusterContentView.prototype._pathComponentForContentView):
(WebInspector.SVGImageResourceClusterContentView.prototype._identifierForContentView):
(WebInspector.SVGImageResourceClusterContentView.prototype._showContentViewForIdentifier):
(WebInspector.SVGImageResourceClusterContentView.prototype._pathComponentSelected):
2017-03-15 Devin Rousso <webkit@devinrousso.com>
Web Inspector: RTL: add support for Timeline ruler selections/movement
https://bugs.webkit.org/show_bug.cgi?id=169588
Reviewed by Matt Baker.
* UserInterface/Views/TimelineOverview.css:
(body[dir=ltr] .timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .selection-handle.right):
(body[dir=rtl] .timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .selection-handle.left):
(body[dir=ltr] .timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .shaded-area.right):
(body[dir=rtl] .timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .shaded-area.left):
(.timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .selection-handle.right): Deleted.
(.timeline-overview.frames > .timeline-ruler:not(.both-handles-clamped) > .shaded-area.right): Deleted.
Fixes alignment of selection handles when in Frames view.
* UserInterface/Views/TimelineOverview.js:
(WebInspector.TimelineOverview.prototype._handleScrollEvent):
Support horizontal scrolling in timelines by treating the current scroll value as negative
when in RTL, flipping the scroll direction.
* UserInterface/Views/TimelineRuler.css:
(body[dir=ltr] .timeline-ruler > .selection-handle.left):
(body[dir=rtl] .timeline-ruler > .selection-handle.left):
(body[dir=ltr] .timeline-ruler > .selection-handle.right):
(body[dir=rtl] .timeline-ruler > .selection-handle.right):
(body[dir=ltr] .timeline-ruler > .shaded-area.left):
(body[dir=rtl] .timeline-ruler > .shaded-area.left):
(body[dir=ltr] .timeline-ruler > .shaded-area.right):
(body[dir=rtl] .timeline-ruler > .shaded-area.right):
(.timeline-ruler > .selection-handle.left): Deleted.
(.timeline-ruler > .selection-handle.right): Deleted.
(.timeline-ruler > .shaded-area.left): Deleted.
(.timeline-ruler > .shaded-area.right): Deleted.
Flip the position alignment of the selection handles and shaded areas when in RTL.
* UserInterface/Views/TimelineRuler.js:
(WebInspector.TimelineRuler.prototype._handleMouseDown):
(WebInspector.TimelineRuler.prototype._handleMouseMove):
(WebInspector.TimelineRuler.prototype._handleMouseUp):
(WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseDown):
(WebInspector.TimelineRuler.prototype._handleSelectionHandleMouseMove):
Treat the current mouse position (event.pageX) as a negative value when in RTL, meaning that
the delta movement from the starting position is flipped.
2017-03-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: REGRESSION: Elements Tab > Node Details Sidebar > Properties Section is spammed with TypeErrors
https://bugs.webkit.org/show_bug.cgi?id=153911
<rdar://problem/24520098>
Reviewed by Devin Rousso.
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved.inspectedPage_node_collectPrototypes):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved):
Update due to naming conventions for code that evalutes in the inspected page.
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.fillSection):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties):
Create a more complete ObjectTreeView for the different sections.
* UserInterface/Views/ObjectTreePropertyTreeElement.js:
(WebInspector.ObjectTreePropertyTreeElement.prototype._updateChildren):
PureAPI behaves the same as ClassAPI and just shows own properties.
* UserInterface/Views/ObjectTreeView.js:
(WebInspector.ObjectTreeView.prototype.showOnlyProperties):
In only properties mode don't show the Prototype expander at the end.
(WebInspector.ObjectTreeView.prototype.setPrototypeNameOverride):
Allow a prototype name override at the top level. This will allow clients
to specify that the object at the top level is a Prototype object, so that
ObjectTreePropertyTreeElements can infer the right NativeFunctionParameter
information knowing that those properties are on a particular prototype.
(WebInspector.ObjectTreeView.prototype.update):
For the PureAPI use getOwnProperties instead of getDisplayableProperties.
This avoids the special handling we have for DOM native properties which
we bubble up to the top as value descriptors even though they are actually
accessor descriptors on prototypes.
(WebInspector.ObjectTreeView.prototype._updateProperties):
Pass the prototype name override onward for object properties.
2017-03-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Exception when fetching computed styles can break future updates of section
https://bugs.webkit.org/show_bug.cgi?id=169638
<rdar://problem/30588688>
Reviewed by Devin Rousso.
* UserInterface/Models/DOMNodeStyles.js:
(WebInspector.DOMNodeStyles.prototype.refresh.wrap):
(WebInspector.DOMNodeStyles.prototype.refresh):
Gracefully handle exceptions. If an exception did happen we
would be unable to update these in the future.
2017-03-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: RTL: add support for Memory timeline
https://bugs.webkit.org/show_bug.cgi?id=169584
Reviewed by Brian Burg.
* UserInterface/Views/MemoryCategoryView.css:
(.memory-category-view > .details):
(body[dir=ltr] .memory-category-view > .details):
(body[dir=rtl] .memory-category-view > .details):
* UserInterface/Views/MemoryTimelineOverviewGraph.css:
(.timeline-overview-graph.memory > .legend):
(body[dir=ltr] .timeline-overview-graph.memory > .legend):
(body[dir=rtl] .timeline-overview-graph.memory > .legend):
(.timeline-overview-graph.memory .memory-pressure-event):
(body[dir=ltr] .timeline-overview-graph.memory .memory-pressure-event):
(body[dir=rtl] .timeline-overview-graph.memory .memory-pressure-event):
* UserInterface/Views/MemoryTimelineOverviewGraph.js:
(WebInspector.MemoryTimelineOverviewGraph.prototype.layout):
Rework the calculation for the marker offset to use "right" in RTL.
* UserInterface/Views/MemoryTimelineView.css:
(.timeline-view.memory > .content > .details > .timeline-ruler):
(body[dir=ltr] .timeline-view.memory > .content > .details > .timeline-ruler):
(body[dir=rtl] .timeline-view.memory > .content > .details > .timeline-ruler):
(.timeline-view.memory > .content > .overview > .divider):
(body[dir=ltr] .timeline-view.memory > .content > .overview > .divider):
(body[dir=rtl] .timeline-view.memory > .content > .overview > .divider):
(.timeline-view.memory .legend):
(body[dir=ltr] .timeline-view.memory .legend):
(body[dir=rtl] .timeline-view.memory .legend):
(.timeline-view.memory .legend > .row):
(.timeline-view.memory .legend > .row > .swatch):
(body[dir=ltr] .timeline-view.memory .legend > .row > .swatch):
(body[dir=rtl] .timeline-view.memory .legend > .row > .swatch):
(body[dir=ltr] .timeline-view.memory .legend > .row > :matches(.label, .size)):
(body[dir=rtl] .timeline-view.memory .legend > .row > :matches(.label, .size)):
(.timeline-view.memory .legend > .row > .label):
(.timeline-view.memory .legend > .row > .size):
2017-03-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: RTL: add support for Timeline graphs
https://bugs.webkit.org/show_bug.cgi?id=169585
Reviewed by Brian Burg.
* UserInterface/Views/HeapAllocationsTimelineOverviewGraph.js:
(WebInspector.HeapAllocationsTimelineOverviewGraph.prototype.layout):
Rework the calculation for the icon offset to use "right" in RTL.
* UserInterface/Views/MemoryTimelineOverviewGraph.css:
(body[dir=rtl] .timeline-overview-graph.memory > .stacked-line-chart):
Flip the chart when in RTL.
* UserInterface/Views/TimelineRecordBar.css:
(.timeline-record-bar):
(body[dir=ltr] .timeline-record-bar > .segment.inactive):
(body[dir=rtl] .timeline-record-bar > .segment.inactive):
(body[dir=ltr] .timeline-record-bar.unfinished > .segment):
(body[dir=rtl] .timeline-record-bar.unfinished > .segment):
(body[dir=ltr] .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(body[dir=rtl] .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(body[dir=ltr] :matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(body[dir=rtl] :matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(.timeline-record-bar > .segment.inactive,): Deleted.
(.timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
(:matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
* UserInterface/Views/TimelineRecordBar.js:
(WebInspector.TimelineRecordBar.prototype.refresh):
Apply the position updates to "right" in RTL.
* UserInterface/Views/TimelineRecordFrame.js:
(WebInspector.TimelineRecordFrame.prototype.refresh):
Apply the position updates to "right" in RTL.
* UserInterface/Views/TimelineRuler.js:
(WebInspector.TimelineRuler.prototype.layout):
(WebInspector.TimelineRuler.prototype._updatePositionOfElement):
(WebInspector.TimelineRuler.prototype._updateMarkers):
(WebInspector.TimelineRuler.prototype._updateSelection):
Apply the position updates to "right" in RTL.
2017-03-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: RTL: add support for DataGrid disclosure arrows and indentation
https://bugs.webkit.org/show_bug.cgi?id=169582
Reviewed by Brian Burg.
* UserInterface/Views/DataGrid.css:
(body[dir=rtl] .data-grid tr.parent td.disclosure::before):
Flip the image in RTL.
* UserInterface/Views/DataGrid.js:
(WebInspector.DataGrid.prototype._updateScrollbarPadding):
Rework the padding calculation for the scrollbar offset to use "right" in RTL.
* UserInterface/Views/DataGridNode.js:
(WebInspector.DataGridNode.prototype.get indentPadding):
(WebInspector.DataGridNode.prototype.createCell):
Rework the padding calculation for indenting (as a child) to use "right" in RTL.
(WebInspector.DataGridNode.prototype.isEventWithinDisclosureTriangle):
Calculate the position of the ::before triangle based on the layout direction.
(WebInspector.DataGridNode.prototype.get leftPadding): Deleted.
2017-03-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: RTL: add support for TimelineOverview sidebar and container layout
https://bugs.webkit.org/show_bug.cgi?id=169583
Reviewed by Brian Burg.
* UserInterface/Views/TimelineOverview.css:
(body[dir=ltr] .timeline-overview > :matches(.navigation-bar.timelines, .tree-outline.timelines)):
(body[dir=rtl] .timeline-overview > :matches(.navigation-bar.timelines, .tree-outline.timelines)):
(body[dir=ltr] .timeline-overview:not(.frames) > :matches(.scroll-container, .timeline-ruler, .graphs-container)):
(body[dir=rtl] .timeline-overview:not(.frames) > :matches(.scroll-container, .timeline-ruler, .graphs-container)):
(.timeline-overview > .navigation-bar.timelines):
(.timeline-overview > .tree-outline.timelines):
(.timeline-overview > .scroll-container):
(.timeline-overview > .timeline-ruler):
(.timeline-overview > .graphs-container):
(.timeline-overview > .scroll-container > .scroll-width-sizer):
(body[dir=ltr] .timeline-overview > .scroll-container > .scroll-width-sizer):
(body[dir=rtl] .timeline-overview > .scroll-container > .scroll-width-sizer):
(.timeline-overview.frames > .graphs-container): Deleted.
2017-03-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: More accurate Resource Timing data in Web Inspector
https://bugs.webkit.org/show_bug.cgi?id=169577
Reviewed by Youenn Fablet.
* UserInterface/Models/ResourceTimingData.js:
(WebInspector.ResourceTimingData.prototype.get requestStart):
(WebInspector.ResourceTimingData.prototype.get responseStart):
Fallback to the startTime if available instead of using the
inaccurate WebContentProcess gathered timestamps.
(WebInspector.ResourceTimingData.prototype.markResponseEndTime):
Verify responseEnd compared to other times we may have.
2017-03-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Remove unnecessary assert for Number.percentageString
https://bugs.webkit.org/show_bug.cgi?id=169589
Reviewed by Matt Baker.
* UserInterface/Base/Utilities.js:
(Number.percentageString):
2017-03-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: allow the user to copy locked CSS selectors in Style - Rules
https://bugs.webkit.org/show_bug.cgi?id=169587
Reviewed by Matt Baker.
* UserInterface/Views/CSSStyleDeclarationSection.css:
(.style-declaration-section:matches(.locked, .selector-locked) > .header > .selector):
2017-03-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: WebSockets: color of outgoing message icon should match text color
https://bugs.webkit.org/show_bug.cgi?id=169512
<rdar://problem/30994284>
Reviewed by Devin Rousso.
Include SVG icon as an inline SVG element to make currentColor work.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Views/WebSocketContentView.css:
(.web-socket.content-view .outgoing .icon): Deleted.
* UserInterface/Views/WebSocketContentView.js:
(WebInspector.WebSocketContentView):
(WebInspector.WebSocketContentView.prototype.addFrame):
(WebInspector.WebSocketContentView.prototype._addRow):
(WebInspector.WebSocketContentView.prototype._timeStringFromTimestamp): Deleted.
* UserInterface/Views/WebSocketDataGridNode.js: Added.
(WebInspector.WebSocketDataGridNode.prototype.createCellContent):
(WebInspector.WebSocketDataGridNode.prototype._timeStringFromTimestamp):
(WebInspector.WebSocketDataGridNode):
2017-03-13 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Event Listeners detail section is unhelpful, default should show listeners by element rather than by event
https://bugs.webkit.org/show_bug.cgi?id=167077
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Views/EventListenerSection.js: Removed.
* UserInterface/Models/DOMNode.js:
(WebInspector.DOMNode.prototype.eventListeners): Renamed to getEventListeners.
* UserInterface/Views/DOMNodeDetailsSidebarPanel.css: Added.
(.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
(body[dir=ltr] .sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
(body[dir=rtl] .sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter):
(.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter:hover):
(.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter:active):
(.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners.collapsed > .header > .filter):
(.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter > select):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel.createOption):
(WebInspector.DOMNodeDetailsSidebarPanel):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.createEventListenerSection):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByEvent):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByNode):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.eventListenersCallback):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners):
Add a filter to the Event Listeners section that changes the way in which event listeners
are grouped. Currently supports two methods:
- Group by Event
- Group by Node
* UserInterface/Views/EventListenerSectionGroup.js:
(WebInspector.EventListenerSectionGroup):
Add ability to display the event type.
* UserInterface/Views/DetailsSection.css:
(.details-section):
Drive-by fix: CSS variable was named incorrectly.
2017-03-13 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Event Listeners section is missing 'once', 'passive' event listener flags
https://bugs.webkit.org/show_bug.cgi?id=167080
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/EventListenerSectionGroup.js:
(WebInspector.EventListenerSectionGroup):
(WebInspector.EventListenerSectionGroup.prototype._type): Deleted.
2017-03-11 Matt Baker <mattbaker@apple.com>
Web Inspector: Add "goto arrow" to DOMNodeTreeElements in the Debugger tab
https://bugs.webkit.org/show_bug.cgi?id=168752
Reviewed by Devin Rousso.
* UserInterface/Base/DOMUtilities.js:
(WebInspector.linkifyNodeReference):
(WebInspector.linkifyNodeReferenceElement):
Expose linkifying an existing element.
* UserInterface/Views/DOMNodeTreeElement.js:
(WebInspector.DOMNodeTreeElement):
(WebInspector.DOMNodeTreeElement.prototype.populateContextMenu):
Add "Reveal in DOM Tree" context menu item.
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node:not(:hover, .selected) .status .go-to-arrow):
Hide the go-to arrow unless hovering or selected.
2017-03-11 Matt Baker <mattbaker@apple.com>
Web Inspector: RTL: fix broken font content view
https://bugs.webkit.org/show_bug.cgi?id=169513
Reviewed by Brian Burg.
Add RTL support to the Font content view.
* UserInterface/Views/FontResourceContentView.css:
(.content-view.resource.font .preview > .line > .metric):
(body[dir=ltr] .content-view.resource.font .preview > .line > .metric):
(body[dir=rtl] .content-view.resource.font .preview > .line > .metric):
Compensate for the flipped z-order of the content and metric elements in
RTL by pushing metrics below the content.
2017-03-10 Matt Baker <mattbaker@apple.com>
Web Inspector: Only show "Break on..." menu if backend supports DOM breakpoints
https://bugs.webkit.org/show_bug.cgi?id=169488
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/DOMBreakpointTreeController.js:
(WebInspector.DOMBreakpointTreeController.appendBreakpointContextMenuItems):
Added assert to catch future cases where UI is being added when
backend support doesn't exist.
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
Check for backend support.
2017-03-10 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: popover with compositing reasons in Layers sidebar has hard to read layout
https://bugs.webkit.org/show_bug.cgi?id=167081
Reviewed by Brian Burg.
* UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
(.layer-tree-popover):
(.layer-tree-popover p):
(.layer-tree-popover ul):
(body[dir=ltr] .layer-tree-popover ul):
(body[dir=rtl] .layer-tree-popover ul):
Show `list-item-style` and make the <p> element stand out more (larger and bold).
2017-03-10 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: in Resources tab navigation bar, can't save the same file from context menu item more than once
https://bugs.webkit.org/show_bug.cgi?id=165665
Reviewed by Brian Burg.
* UserInterface/Views/ContextMenuUtilities.js:
(WebInspector.appendContextMenuItemsForSourceCode):
Force the "Save As" dialog to appear when saving, as otherwise subsequent clicks on "Save"
in the context menu will just override the previously saved file.
2017-03-10 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: REGRESSION(r213149): scope bar items in elements sidebar have wrong padding/margin
https://bugs.webkit.org/show_bug.cgi?id=169204
Reviewed by Brian Burg.
* UserInterface/Views/Sidebar.css:
(.sidebar > .navigation-bar):
Replace `align-content` with `align-items`, as the former causes the child elements to fill
as much vertical space as possible instead of only using the space necessary for its content.
* UserInterface/Views/ScopeRadioButtonNavigationItem.css:
(.scope-radio-button-navigation-item > .arrows):
Drive-by fix: ensure that the up/down arrows are not clickable, which would prevent the
<select> from showing.
2017-03-09 Matt Baker <mattbaker@apple.com>
Web Inspector: Add XHR breakpoints UI
https://bugs.webkit.org/show_bug.cgi?id=168763
<rdar://problem/30952439>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
New UI strings.
* UserInterface/Controllers/DOMDebuggerManager.js:
Plumbing for XHR breakpoints. Like DOM breakpoints, they are tracked
per-page. Unlike DOM breakpoints, they have no separate "resolved"
state, and are simply added/removed as the main frame changes.
(WebInspector.DOMDebuggerManager):
(WebInspector.DOMDebuggerManager.prototype.get allRequestsBreakpoint):
(WebInspector.DOMDebuggerManager.prototype.get xhrBreakpoints):
(WebInspector.DOMDebuggerManager.prototype.isBreakpointRemovable):
(WebInspector.DOMDebuggerManager.prototype.removeDOMBreakpoint):
(WebInspector.DOMDebuggerManager.prototype.addXHRBreakpoint):
(WebInspector.DOMDebuggerManager.prototype.removeXHRBreakpoint):
(WebInspector.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
(WebInspector.DOMDebuggerManager.prototype._detachXHRBreakpoint):
(WebInspector.DOMDebuggerManager.prototype._updateXHRBreakpoint.breakpointUpdated):
(WebInspector.DOMDebuggerManager.prototype._updateXHRBreakpoint):
(WebInspector.DOMDebuggerManager.prototype._resolveXHRBreakpoint):
(WebInspector.DOMDebuggerManager.prototype._saveXHRBreakpoints):
(WebInspector.DOMDebuggerManager.prototype._domBreakpointDisabledStateDidChange):
(WebInspector.DOMDebuggerManager.prototype._xhrBreakpointDisabledStateDidChange):
(WebInspector.DOMDebuggerManager.prototype._mainResourceDidChange):
(WebInspector.DOMDebuggerManager.prototype._saveBreakpoints): Deleted.
Renamed `saveDOMBreakpoints`.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype._pauseReasonFromPayload):
Plumbing for XHR breakpoint pause reason.
* UserInterface/Controllers/XHRBreakpointTreeController.js: Added.
Creates the "All Requests" breakpoint, handles DOMDebuggerManager messages,
and updates an associated tree outline as XHR breakpoints are added and removed.
(WebInspector.XHRBreakpointTreeController):
(WebInspector.XHRBreakpointTreeController.prototype.revealAndSelect):
(WebInspector.XHRBreakpointTreeController.prototype.disconnect):
(WebInspector.XHRBreakpointTreeController.prototype._xhrBreakpointAdded):
(WebInspector.XHRBreakpointTreeController.prototype._xhrBreakpointRemoved):
(WebInspector.XHRBreakpointTreeController.prototype._mainResourceDidChange):
(WebInspector.XHRBreakpointTreeController.prototype._reset):
* UserInterface/Main.html:
New files.
* UserInterface/Models/XHRBreakpoint.js: Added.
New model class. XHR breakpoints have an associated URL, which is matched
against the request URL when deciding whether to break. An empty URL matches
all XMLHttpRequests.
(WebInspector.XHRBreakpoint):
(WebInspector.XHRBreakpoint.prototype.get documentURL):
(WebInspector.XHRBreakpoint.prototype.get url):
(WebInspector.XHRBreakpoint.prototype.get disabled):
(WebInspector.XHRBreakpoint.prototype.set disabled):
(WebInspector.XHRBreakpoint.prototype.get serializableInfo):
(WebInspector.XHRBreakpoint.prototype.saveIdentityToCookie):
* UserInterface/Test.html:
New files.
* UserInterface/Views/ContentView.js:
(WebInspector.ContentView.createFromRepresentedObject):
Plumbing for new represented object type, to prevent runtime assertion.
* UserInterface/Views/DOMBreakpointTreeElement.js:
(WebInspector.DOMBreakpointTreeElement):
Reuse BreakpointTreeElement styles.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype.saveStateToCookie):
(WebInspector.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
(WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
(WebInspector.DebuggerSidebarPanel.prototype._addXHRBreakpointButtonClicked):
(WebInspector.DebuggerSidebarPanel.prototype.willDismissPopover):
* UserInterface/Views/InputPopover.css: Added.
(.popover .input-popover-content):
(.popover .input-popover-content > .editor):
(.popover .input-popover-content > .editor > .CodeMirror):
(.popover .input-popover-content > .editor > .CodeMirror-scroll):
* UserInterface/Views/InputPopover.js: Added.
New general purpose popover class. Style and structure lifted from
the Popover implementation used by the Probe Expressions UI. A follow-up
has been filed to switch that UI over to this new class:
https://bugs.webkit.org/show_bug.cgi?id=169428.
(WebInspector.InputPopover):
(WebInspector.InputPopover.prototype.get value):
(WebInspector.InputPopover.prototype.get result):
(WebInspector.InputPopover.prototype.show):
(WebInspector.InputPopover.prototype._presentOverTargetElement):
* UserInterface/Views/XHRBreakpointTreeElement.js: Added.
Tree element class for XHR breakpoints. Behaves identically to
script and DOM breakpoint tree elements.
(WebInspector.XHRBreakpointTreeElement):
Reuse BreakpointTreeElement styles.
(WebInspector.XHRBreakpointTreeElement.prototype.onattach):
(WebInspector.XHRBreakpointTreeElement.prototype.ondetach):
(WebInspector.XHRBreakpointTreeElement.prototype.ondelete):
(WebInspector.XHRBreakpointTreeElement.prototype.onenter):
(WebInspector.XHRBreakpointTreeElement.prototype.onspace):
(WebInspector.XHRBreakpointTreeElement.prototype.populateContextMenu):
(WebInspector.XHRBreakpointTreeElement.prototype._statusImageElementClicked):
(WebInspector.XHRBreakpointTreeElement.prototype._statusImageElementFocused):
(WebInspector.XHRBreakpointTreeElement.prototype._statusImageElementMouseDown):
(WebInspector.XHRBreakpointTreeElement.prototype._toggleBreakpoint):
(WebInspector.XHRBreakpointTreeElement.prototype._updateStatus):
2017-03-09 Matt Baker <mattbaker@apple.com>
REGRESSION (r196271): Web Inspector: DOM element loses focus/active selection after committing an inline attribute editor in DOMTreeOutline
https://bugs.webkit.org/show_bug.cgi?id=168119
<rdar://problem/30466013>
Reviewed by Brian Burg.
Fix a regression caused by http://trac.webkit.org/changeset/196271, which
updated WebInspector.isEventTargetAnEditableField to detect the editing
scenarios used by DOMTreeElement and DataGrid. This subtly changed the
behavior of WebInspector._focusChanged, which expected all editable fields
to be backed by a CodeMirror instance.
* UserInterface/Base/Main.js:
2017-03-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Show HTTP protocol version and other Network Load Metrics (IP Address, Priority, Connection ID)
https://bugs.webkit.org/show_bug.cgi?id=29687
<rdar://problem/19281586>
Reviewed by Matt Baker and Brian Burg.
These columns are available in the Network DataGrids, but are
initially hidden. They can be shown by right clicking on the
table header and showing these columns. We are going to rework
the default list of visible columns later.
* Localizations/en.lproj/localizedStrings.js:
New localized strings for data grid headers and Low/Medium/High.
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype.resourceRequestDidFinishLoading):
* UserInterface/Protocol/NetworkObserver.js:
(WebInspector.NetworkObserver.prototype.loadingFinished):
Pass metrics on to the Resource.
* UserInterface/Models/Resource.js:
(WebInspector.Resource):
(WebInspector.Resource.displayNameForType):
(WebInspector.Resource.responseSourceFromPayload):
(WebInspector.Resource.networkPriorityFromPayload):
(WebInspector.Resource.connectionIdentifierFromPayload):
(WebInspector.Resource.prototype.get protocol):
(WebInspector.Resource.prototype.get priority):
(WebInspector.Resource.prototype.get remoteAddress):
(WebInspector.Resource.prototype.get connectionIdentifier):
(WebInspector.Resource.prototype.updateWithMetrics):
Include metrics accessors and default values.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView):
* UserInterface/Views/NetworkTimelineView.js:
(WebInspector.NetworkTimelineView):
Add metrics columns if the backend may be sending them.
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype.get data):
(WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
(WebInspector.ResourceTimelineDataGridNode.prototype._displayNameForPriority):
(WebInspector.ResourceTimelineDataGridNode.prototype._cachedCellContent):
Display strings for new columns.
* UserInterface/Views/TimelineDataGridNode.js:
* UserInterface/Views/TimelineRecordBar.js:
(WebInspector.TimelineRecordBar.prototype.refresh):
Avoid assertions if Graph column is unavailable.
* UserInterface/Views/DataGrid.js:
(WebInspector.DataGrid):
(WebInspector.DataGrid.prototype.createSettings):
(WebInspector.DataGrid.prototype.setColumnVisible):
Better support for restoring user preference of initially
hidden columns which the user may have shown.
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel):
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
Show the Protocol and Priority in the Resources sidebar.
2017-03-09 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Show individual messages in the content pane for a WebSocket
https://bugs.webkit.org/show_bug.cgi?id=169011
Reviewed by Joseph Pecoraro.
When selecting a Web Socket in Network panel or Resources, display a table
of all messages that have been sent and received.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype.webSocketWillSendHandshakeRequest):
Add a walltime parameter.
(WebInspector.FrameResourceManager.prototype._webSocketFrameReceivedOrSent):
Fix a bug: masked messages are outgoing, not incoming.
* UserInterface/Images/ArrowUp.svg: Added.
* UserInterface/Images/gtk/ArrowUp.svg: Added.
Add an icon for outgoing messages.
* UserInterface/Main.html:
* UserInterface/Models/WebSocketResource.js:
(WebInspector.WebSocketResource):
(WebInspector.WebSocketResource.prototype.get walltime):
(WebInspector.WebSocketResource.prototype.addFrame):
(WebInspector.WebSocketResource.prototype._walltimeForWebSocketTimestamp):
* UserInterface/Protocol/NetworkObserver.js:
(WebInspector.NetworkObserver.prototype.webSocketWillSendHandshakeRequest):
(WebInspector.NetworkObserver.prototype.webSocketFrameSent):
(WebInspector.NetworkObserver.prototype.webSocketFrameError):
(WebInspector.NetworkObserver):
* UserInterface/Views/NetworkSidebarPanel.js:
(WebInspector.NetworkSidebarPanel.prototype.treeElementAddedOrChanged):
* UserInterface/Views/ResourceClusterContentView.js:
(WebInspector.ResourceClusterContentView.prototype.get responseContentView):
* UserInterface/Views/WebSocketContentView.css: Added.
(.web-socket.content-view > .data-grid):
(.web-socket.content-view > .data-grid table.data):
(.web-socket.content-view > .data-grid td.data-column,):
(body[dir=ltr] .web-socket.content-view > .data-grid .data-column > div):
(body[dir=rtl] .web-socket.content-view > .data-grid .data-column > div):
(.web-socket.content-view .icon):
(body[dir=ltr] .web-socket.content-view .icon):
(body[dir=rtl] .web-socket.content-view .icon):
(.web-socket.content-view .outgoing .icon):
(.web-socket.content-view .data-grid.variable-height-rows table.data tr:nth-child(odd)):
(.web-socket.content-view .data-grid table.data tr.revealed):
(.web-socket.content-view .data-grid.variable-height-rows table.data tr.outgoing):
(.web-socket.content-view .data-grid.variable-height-rows table.data tr.non-text-frame):
* UserInterface/Views/WebSocketContentView.js: Added.
(WebInspector.WebSocketContentView):
Only show Time column when walltime is available.
(WebInspector.WebSocketContentView.textForOpcode):
(WebInspector.WebSocketContentView.prototype.shown):
(WebInspector.WebSocketContentView.prototype.hidden):
(WebInspector.WebSocketContentView.prototype.addFrame):
(WebInspector.WebSocketContentView.prototype._updateFrames):
Only render frames that haven't been rendered yet.
(WebInspector.WebSocketContentView.prototype._addRow):
(WebInspector.WebSocketContentView.prototype._timeStringFromTimestamp):
2017-03-09 Matt Baker <mattbaker@apple.com>
Web Inspector: DOMTreeManager dispatches DocumentUpdated twice when the document is cleared
https://bugs.webkit.org/show_bug.cgi?id=168984
Reviewed by Timothy Hatcher.
* UserInterface/Controllers/DOMTreeManager.js:
(WebInspector.DOMTreeManager.prototype._setDocument):
Compare old and new document values before dispatching message.
2017-03-09 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Add settings for controlling Styles sidebar intelligence
https://bugs.webkit.org/show_bug.cgi?id=169181
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
Add three new settings:
- stylesShowInlineWarnings
- stylesInsertNewline
- stylesSelectOnFirstClick
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseDown):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._handleMouseUp):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._createInlineSwatches.update):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded):
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings > .separator): Added.
(.content-view.settings > .setting-container):
(.content-view.settings > .setting-container.combined):
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype.layout.createContainer):
(WebInspector.SettingsTabContentView.prototype.layout.createSeparator): Added.
(WebInspector.SettingsTabContentView.prototype.layout):
2017-03-08 Matt Baker <mattbaker@apple.com>
Web Inspector: Add DOM breakpoints UI for node/subtree modification events
https://bugs.webkit.org/show_bug.cgi?id=168101
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
New UI strings.
* UserInterface/Base/Main.js:
(WebInspector.loaded):
Add new manager.
* UserInterface/Controllers/DOMBreakpointTreeController.js: Added.
Handles messages from DOMDebuggerManager, and updates an associated
tree outline as DOM breakpoints are added and removed.
(WebInspector.DOMBreakpointTreeController):
(WebInspector.DOMBreakpointTreeController.appendBreakpointContextMenuItems):
(WebInspector.DOMBreakpointTreeController.prototype.disconnect):
(WebInspector.DOMBreakpointTreeController.prototype._addBreakpointTreeElement):
(WebInspector.DOMBreakpointTreeController.prototype._removeBreakpointTreeElement):
(WebInspector.DOMBreakpointTreeController.prototype._domBreakpointAdded):
(WebInspector.DOMBreakpointTreeController.prototype._domBreakpointRemoved):
(WebInspector.DOMBreakpointTreeController.prototype._domBreakpointResolvedStateDidChange):
(WebInspector.DOMBreakpointTreeController.prototype._mainResourceDidChange):
* UserInterface/Controllers/DOMDebuggerManager.js: Added.
New frontend manager for the DOMDebugger domain. A DOM breakpoint is
described by a location (URL and node path) and type. The manager keeps
all known DOM breakpoints in memory, and considers a breakpoint to be
"resolved" once its location is pushed to the frontend.
Breakpoints located within a child frame are still associated with the
main frame. Whenever a the main resource of a child frame changes, all
unresolved breakpoints associated with the main frame are speculatively
resolved.
(WebInspector.DOMDebuggerManager):
(WebInspector.DOMDebuggerManager.prototype.get supported):
(WebInspector.DOMDebuggerManager.prototype.get domBreakpoints):
(WebInspector.DOMDebuggerManager.prototype.domBreakpointsForNode):
(WebInspector.DOMDebuggerManager.prototype.addDOMBreakpoint):
(WebInspector.DOMDebuggerManager.prototype.removeDOMBreakpoint):
(WebInspector.DOMDebuggerManager.prototype._detachDOMBreakpoint):
(WebInspector.DOMDebuggerManager.prototype._detachBreakpointsForFrame):
(WebInspector.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
(WebInspector.DOMDebuggerManager.prototype._resolveDOMBreakpoint):
(WebInspector.DOMDebuggerManager.prototype._updateDOMBreakpoint):
(WebInspector.DOMDebuggerManager.prototype._saveBreakpoints):
(WebInspector.DOMDebuggerManager.prototype._domBreakpointDisabledStateDidChange):
(WebInspector.DOMDebuggerManager.prototype._childFrameWasRemoved):
(WebInspector.DOMDebuggerManager.prototype._mainFrameDidChange):
(WebInspector.DOMDebuggerManager.prototype._mainResourceDidChange):
(WebInspector.DOMDebuggerManager.prototype._nodeInserted):
(WebInspector.DOMDebuggerManager.prototype._nodeRemoved):
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype._pauseReasonFromPayload):
Plumbing for DOM breakpoint pause reason.
* UserInterface/Images/DOMBreakpoint.svg: Added.
New art. Visually very similar to a script breakpoint, with some
tweaks to make it suitable for display in the DOM tree gutter.
* UserInterface/Main.html:
New files.
* UserInterface/Models/DOMBreakpoint.js: Added.
New model class. DOM breakpoints are either associated with a DOM node
when created, or constructed from a cookie and resolved in the future.
(WebInspector.DOMBreakpoint):
(WebInspector.DOMBreakpoint.prototype.get type):
(WebInspector.DOMBreakpoint.prototype.get url):
(WebInspector.DOMBreakpoint.prototype.get path):
(WebInspector.DOMBreakpoint.prototype.get disabled):
(WebInspector.DOMBreakpoint.prototype.set disabled):
(WebInspector.DOMBreakpoint.prototype.get domNodeIdentifier):
(WebInspector.DOMBreakpoint.prototype.set domNodeIdentifier):
(WebInspector.DOMBreakpoint.prototype.get serializableInfo):
(WebInspector.DOMBreakpoint.prototype.saveIdentityToCookie):
* UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
The DOMDebugger should not be enabled for legacy backends, since legacy
backend support was never tested and may have issues.
* UserInterface/Test.html:
New files.
* UserInterface/Test/Test.js:
(WebInspector.loaded):
Add new manager.
* UserInterface/Views/ContentView.js:
(WebInspector.ContentView.createFromRepresentedObject):
(WebInspector.ContentView.resolvedRepresentedObjectForRepresentedObject):
Plumbing for additional represented object types. DOMNode is included
because the Debugger sidebar panel shows DOM breakpoint tree elements
as children of a DOM node tree element.
* UserInterface/Views/DOMBreakpointTreeElement.css: Added.
(.item.dom-breakpoint .icon):
(.item.dom-breakpoint.breakpoint-paused-icon .icon):
(.item.dom-breakpoint .status img):
(.item.dom-breakpoint .status > img.disabled):
Styles for "Pause Reason" and "DOM Breakpoints" sections.
* UserInterface/Views/DOMBreakpointTreeElement.js: Added.
Tree element class for DOM breakpoints. Includes a breakpoint status
element and context menu for delete/disable actions, similar to script
breakpoint tree elements.
(WebInspector.DOMBreakpointTreeElement):
(WebInspector.DOMBreakpointTreeElement.displayNameForType):
(WebInspector.DOMBreakpointTreeElement.prototype.onattach):
(WebInspector.DOMBreakpointTreeElement.prototype.ondetach):
(WebInspector.DOMBreakpointTreeElement.prototype.ondelete):
(WebInspector.DOMBreakpointTreeElement.prototype.onenter):
(WebInspector.DOMBreakpointTreeElement.prototype.onspace):
(WebInspector.DOMBreakpointTreeElement.prototype.populateContextMenu):
(WebInspector.DOMBreakpointTreeElement.prototype._statusImageElementClicked):
(WebInspector.DOMBreakpointTreeElement.prototype._statusImageElementFocused):
(WebInspector.DOMBreakpointTreeElement.prototype._statusImageElementMouseDown):
(WebInspector.DOMBreakpointTreeElement.prototype._toggleBreakpoint):
(WebInspector.DOMBreakpointTreeElement.prototype._updateStatus):
* UserInterface/Views/DOMNodeTreeElement.js: Added.
Tree element class for DOM nodes, which serves as a parent for DOM
breakpoint tree elements. Includes context menu for bulk delete/disable
of all child breakpoints.
(WebInspector.DOMNodeTreeElement):
(WebInspector.DOMNodeTreeElement.prototype.ondelete):
(WebInspector.DOMNodeTreeElement.prototype.populateContextMenu):
* UserInterface/Views/DOMTreeContentView.css:
Styles for DOM breakpoint gutter and breakpoint indicators, including
"left pointing" breakpoints for RTL mode.
(.content-view.dom-tree.show-gutter .tree-outline.dom):
(body[dir=ltr] .content-view.dom-tree.show-gutter .tree-outline.dom):
(body[dir=rtl] .content-view.dom-tree.show-gutter .tree-outline.dom):
(.content-view.dom-tree .tree-outline.dom li .status-image):
(body[dir=ltr] .content-view.dom-tree .tree-outline.dom li .status-image):
(body[dir=rtl] .content-view.dom-tree .tree-outline.dom li .status-image):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint):
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li.selected .status-image.breakpoint):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled):
(.content-view.dom-tree .tree-outline.dom.breakpoints-disabled li .status-image.breakpoint):
(.content-view.dom-tree .tree-outline.dom.breakpoints-disabled li .status-image.breakpoint.disabled):
* UserInterface/Views/DOMTreeContentView.js:
Add support for DOM breakpoint gutter and breakpoint indicators.
Breakpoint indicator elements are part of the DOM tree element, and are
updated whenever there a breakpoint's disabled or resolved state changes.
(WebInspector.DOMTreeContentView):
(WebInspector.DOMTreeContentView.prototype.get breakpointGutterEnabled):
(WebInspector.DOMTreeContentView.prototype.set breakpointGutterEnabled):
(WebInspector.DOMTreeContentView.prototype.shown):
(WebInspector.DOMTreeContentView.prototype.closed):
(WebInspector.DOMTreeContentView.prototype._domTreeElementAdded):
(WebInspector.DOMTreeContentView.prototype._domBreakpointAddedOrRemoved):
(WebInspector.DOMTreeContentView.prototype._domBreakpointDisabledStateDidChange):
(WebInspector.DOMTreeContentView.prototype._domBreakpointResolvedStateDidChange):
(WebInspector.DOMTreeContentView.prototype._updateBreakpointStatus):
(WebInspector.DOMTreeContentView.prototype._restoreBreakpointsAfterUpdate):
(WebInspector.DOMTreeContentView.prototype._breakpointsEnabledDidChange):
* UserInterface/Views/DOMTreeElement.js:
Add support for breakpoint status element and content menu.
(WebInspector.DOMTreeElement):
(WebInspector.DOMTreeElement.prototype.get breakpointStatus):
(WebInspector.DOMTreeElement.prototype.set breakpointStatus):
(WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
(WebInspector.DOMTreeElement.prototype.updateTitle):
(WebInspector.DOMTreeElement.prototype._updateBreakpointStatus):
(WebInspector.DOMTreeElement.prototype._statusImageContextmenu):
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node .titles):
(.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node .icon):
Styles for DOM node tree elements.
* UserInterface/Views/DebuggerSidebarPanel.js:
Add new DOM Breakpoints section, and support for the "DOM" pause reason.
(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype.closed):
(WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
(WebInspector.DebuggerSidebarPanel.prototype._domBreakpointAddedOrRemoved):
* UserInterface/Views/FrameDOMTreeContentView.js:
(WebInspector.FrameDOMTreeContentView.prototype._rootDOMNodeAvailable):
Restore DOM breakpoints once the root node is available.
* UserInterface/Views/Variables.css:
(:root):
Fill and stroke colors for resolved, unresolved, and disabled breakpoints.
* Versions/Inspector-iOS-10.0.json:
* Versions/Inspector-iOS-10.3.json:
* Versions/Inspector-iOS-7.0.json:
* Versions/Inspector-iOS-8.0.json:
* Versions/Inspector-iOS-9.0.json:
* Versions/Inspector-iOS-9.3.json:
2017-03-08 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: RTL: table header columns and cells don't line up, dragging seems backwards
https://bugs.webkit.org/show_bug.cgi?id=168289
Reviewed by Brian Burg.
Changed the algorithm used to position columns when in RTL to use right offsets instead of
left offsets. This also applies to the resizer elements between columns.
* UserInterface/Views/DataGrid.css:
(.data-grid):
(.data-grid th):
(body[dir=ltr] .data-grid :matches(th, td):not(:last-child)):
(body[dir=rtl] .data-grid :matches(th, td):not(:last-child)):
(.data-grid th:matches(.sort-ascending, .sort-descending)):
(body[dir=ltr] .data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)):
(body[dir=rtl] .data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)):
(.data-grid .right div):
(body[dir=ltr] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child):
(body[dir=rtl] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child):
(.data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child::after):
(body[dir=ltr] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child::after):
(body[dir=rtl] .data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child::after):
(.data-grid th.sort-ascending > div:first-child::after):
(.data-grid th.sort-descending > div:first-child::after):
(.data-grid tr.parent td.disclosure::before):
(body[dir=ltr] .data-grid tr.parent td.disclosure::before):
(body[dir=rtl] .data-grid tr.parent td.disclosure::before):
(.data-grid td .icon):
(body[dir=ltr] .data-grid td .icon):
(body[dir=rtl] .data-grid td .icon):
(.data-grid td .go-to-arrow):
(body[dir=ltr] .data-grid td .go-to-arrow):
(body[dir=rtl] .data-grid td .go-to-arrow):
(.data-grid .resizer):
(body[dir=ltr] .data-grid .resizer):
(body[dir=rtl] .data-grid .resizer):
(.data-grid table:matches(.header, .data)):
(body[dir=ltr] .data-grid table:matches(.header, .data)):
(body[dir=rtl] .data-grid table:matches(.header, .data)):
(body[dir=ltr] .data-grid :matches(th, td):first-child):
(body[dir=rtl] .data-grid :matches(th, td):first-child):
(@media (-webkit-min-device-pixel-ratio: 2)):
(.data-grid :matches(th, td):not(:last-child)): Deleted.
(.data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)): Deleted.
(.data-grid th:matches(.sort-ascending, .sort-descending) > div:first-child): Deleted.
(.data-grid table.header, .data-grid table.data): Deleted.
* UserInterface/Views/DataGrid.js:
(WebInspector.DataGrid.prototype._positionResizerElements):
(WebInspector.DataGrid.prototype._positionHeaderViews):
(WebInspector.DataGrid.prototype.resizerDragging):
2017-03-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Should be able to see where Resources came from (Memory Cache, Disk Cache)
https://bugs.webkit.org/show_bug.cgi?id=164892
<rdar://problem/29320562>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
New localized strings for memory/disk cache information.
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype.markResourceRequestAsServedFromMemoryCache):
Make this legacy path more explicit.
(WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
Make this memory cache path more explicit.
(WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
Pass the resource's response source onward.
* UserInterface/Models/Resource.js:
(WebInspector.Resource):
(WebInspector.Resource.responseSourceFromPayload):
(WebInspector.Resource.prototype.get responseSource):
(WebInspector.Resource.prototype.hasResponse):
(WebInspector.Resource.prototype.updateForResponse):
(WebInspector.Resource.prototype.markAsCached):
(WebInspector.Resource.prototype.legacyMarkServedFromMemoryCache):
(WebInspector.Resource.prototype.legacyMarkServedFromDiskCache):
Include a WebInspector.ResponseSource enum.
Update a Resource's responseSource state where appropriate.
* UserInterface/Protocol/NetworkObserver.js:
(WebInspector.NetworkObserver.prototype.requestServedFromCache):
Mark legacy path.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView):
* UserInterface/Views/NetworkTimelineView.js:
(WebInspector.NetworkTimelineView):
Tweak default column sizes to make Cached and graph columns a little larger.
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
(WebInspector.ResourceTimelineDataGridNode.prototype._cachedCellContent):
Update "Cached" column data with more information if available.
* UserInterface/Views/NetworkGridContentView.css:
(.content-view.network-grid > .data-grid .cache-type):
(.content-view.network-grid > .data-grid:matches(:focus, .force-focus) tr.selected .cache-type):
Style the cache type a secondary color.
2017-03-08 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: add a "create breakpoint" context menu item for linkified source locations
https://bugs.webkit.org/show_bug.cgi?id=47442
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WebInspector.isShowingResourcesTab): Added.
(WebInspector.linkifyElement):
Now calls WebInspector.appendContextMenuItemsForSourceCode on "contextmenu" events for the
created element.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.breakpointForSourceCodeLocation):
Returns the first breakpoint (since there should only be one) that matches the given location.
* UserInterface/Views/ContextMenuUtilities.js:
(WebInspector.appendContextMenuItemsForSourceCode):
Rework parameters to also accept a WebInspector.SourceCodeLocation, thereby allowing the
setting of breakpoints so long as the associated WebInspector.SourceCode is a script.
* UserInterface/Views/Main.css:
(.resource-link, .go-to-link):
Prevent link from being selected.
2017-03-08 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: RTL: Switching back to System Direction doesn't change the dock side
https://bugs.webkit.org/show_bug.cgi?id=169323
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WebInspector.setLayoutDirection):
Change the dock side based on the resolved layout direction, not the current setting value.
2017-03-08 Matt Baker <mattbaker@apple.com>
REGRESSION (r212998): Web Inspector: DetailsSections with options have broken layout
https://bugs.webkit.org/show_bug.cgi?id=169350
Reviewed by Brian Burg.
* UserInterface/Views/DetailsSection.css:
(.details-section):
Fix negative margin.
(body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow),):
(body[dir=ltr] .details-section > .header::before,):
(body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow, .options > .navigation-bar),): Deleted.
It looks like :matches doesn't accept compound selectors in its selector list.
2017-03-07 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: DOM Tree broken if an element has a "debounce" attribute
https://bugs.webkit.org/show_bug.cgi?id=169336
<rdar://problem/30899430>
Reviewed by Brian Burg.
* UserInterface/Models/DOMNode.js:
(WebInspector.DOMNode):
(WebInspector.DOMNode.prototype.getAttribute):
(WebInspector.DOMNode.prototype.removeAttribute.mycallback):
(WebInspector.DOMNode.prototype.removeAttribute):
Convert the attributes map to an actual Map to avoid name collisions
with Object.prototype properties.
2017-03-07 Chris Dumez <cdumez@apple.com>
Drop non-standard MessageEvent.webkitInitMessageEvent()
https://bugs.webkit.org/show_bug.cgi?id=169295
Reviewed by Joseph Pecoraro.
Drop MessageEvent.webkitInitMessageEvent and update parameters for various
init*Event() operations to match the current implementation.
* UserInterface/Models/NativeFunctionParameters.js:
2017-03-04 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Show Web Socket connections in Network tab
https://bugs.webkit.org/show_bug.cgi?id=167520
Reviewed by Joseph Pecoraro.
Show Web Socket connections in Network and Resources tabs. Display HTTP headers
of Web Socket handshake request in the details sidebar.
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype.initialize):
(WebInspector.FrameResourceManager.prototype.webSocketCreated):
(WebInspector.FrameResourceManager.prototype.webSocketWillSendHandshakeRequest):
webSocketWillSendHandshakeRequest doesn't receive a request URL as one of its parameters.
Store URLs received from webSocketCreated method in _webSocketIdentifierToURL map.
(WebInspector.FrameResourceManager.prototype.webSocketHandshakeResponseReceived):
(WebInspector.FrameResourceManager.prototype.webSocketFrameReceived):
(WebInspector.FrameResourceManager.prototype.webSocketFrameSent):
(WebInspector.FrameResourceManager.prototype.webSocketClosed):
Mark resource as finished when Web Socket handshake is complete or Web Socket is closed.
This may change in the future.
(WebInspector.FrameResourceManager.prototype._webSocketFrameReceivedOrSent):
* UserInterface/Main.html:
* UserInterface/Models/WebSocketResource.js: Added.
(WebInspector.WebSocketResource):
(WebInspector.WebSocketResource.prototype.set readyState):
(WebInspector.WebSocketResource.prototype.get readyState):
(WebInspector.WebSocketResource.prototype.get frames):
(WebInspector.WebSocketResource.prototype.addFrame):
Introduce WebSocketResource model to store WebSocket frames (incoming and outgoing messages)
and readyState.
* UserInterface/Protocol/NetworkObserver.js:
(WebInspector.NetworkObserver.prototype.webSocketCreated):
(WebInspector.NetworkObserver.prototype.webSocketWillSendHandshakeRequest):
(WebInspector.NetworkObserver.prototype.webSocketHandshakeResponseReceived):
(WebInspector.NetworkObserver.prototype.webSocketClosed):
(WebInspector.NetworkObserver.prototype.webSocketFrameReceived):
(WebInspector.NetworkObserver.prototype.webSocketFrameError):
(WebInspector.NetworkObserver.prototype.webSocketFrameSent):
(WebInspector.NetworkObserver):
Add corresponding methods for the newly added FrameResourceManager methods.
* UserInterface/Test.html:
* UserInterface/Views/NetworkSidebarPanel.js:
(WebInspector.NetworkSidebarPanel.prototype.treeElementAddedOrChanged):
Don't show the go to arrow for WebSocket items since WebSocketContentView isn't implemented
yet.
* UserInterface/Views/ResourceClusterContentView.js:
(WebInspector.ResourceClusterContentView.prototype.get responseContentView):
Don't show any content views for WebSocket items.
* UserInterface/Views/ResourceTreeElement.js:
(WebInspector.ResourceTreeElement.prototype.ondblclick):
Don't open WebSocket URL in a new browser tab.
2017-03-02 Matt Baker <mattbaker@apple.com>
Web Inspector: Should be able to push nodes in an iframe subtree to the frontend
https://bugs.webkit.org/show_bug.cgi?id=169086
Reviewed by Joseph Pecoraro.
* UserInterface/Views/DOMTreeContentView.js:
(WebInspector.DOMTreeContentView.prototype._selectedNodeDidChange):
Use the URL of the main frame instead of the content frame URL.
2017-03-01 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Annotators should not be enabled if the TextEditor is not visible
https://bugs.webkit.org/show_bug.cgi?id=169059
Reviewed by Joseph Pecoraro.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._addResource):
(WebInspector.DebuggerSidebarPanel.prototype._addScript):
Only call `showDefaultContentViewForTreeElement` if the panel has been added to a sidebar.
It is not valid to simply check whether the panel is visible, as the sidebar can be collapsed.
In that case, we still want to display the content view, so we instead check that the panel
has been added to a sidebar, meaning that it is ready to be displayed in the current tab.
2017-02-28 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: RTL: expose the Layout Direction setting in Production builds, keep using LTR by default
https://bugs.webkit.org/show_bug.cgi?id=168999
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype.layout):
Remove the WebInspector.isDebugUIEnabled() check around the Layout Direction setting.
2017-02-28 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: It is possible to get the New Tab button in addition to the seven expected tabs
https://bugs.webkit.org/show_bug.cgi?id=168976
Reviewed by Brian Burg.
* UserInterface/Views/TabBar.css:
(.tab-bar.collapsed:not(.hide-titles) > .item:not(.pinned):hover > .icon):
(.tab-bar.collapsed:not(.hide-titles) > .item:hover > .close):
(.tab-bar.collapsed:not(.hide-titles) > .item:not(.pinned, .default-tab):hover > .icon): Deleted.
(.tab-bar.collapsed:not(.hide-titles) > .item:not(.default-tab):hover > .close): Deleted.
2017-02-28 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: CSS variable uses that are unresolved should have an error or warning icon
https://bugs.webkit.org/show_bug.cgi?id=168352
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype._createInlineSwatches.update):
Insert a warning icon if the variable is not found in the computed style.
2017-02-25 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: RTL: add support for Color Picker
https://bugs.webkit.org/show_bug.cgi?id=168853
Reviewed by Brian Burg.
* UserInterface/Views/ColorPicker.css:
(.color-picker):
(body[dir=ltr] .color-picker > .brightness):
(body[dir=rtl] .color-picker > .brightness):
(body[dir=ltr] .color-picker > .opacity):
(body[dir=rtl] .color-picker > .opacity):
(.color-picker > .brightness): Deleted.
(.color-picker > .opacity): Deleted.
* UserInterface/Views/ColorWheel.js:
(WebInspector.ColorWheel.prototype.set dimension):
Set the CSS width and height style of the container element to ensure that the element only
takes up the space it needs.
* UserInterface/Views/Slider.css:
(.slider):
* UserInterface/Views/Variables.css:
(:root):
Add `--slider-height` CSS variable for convenience.
2017-02-25 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: RTL: add support for Bezier/Spring editor
https://bugs.webkit.org/show_bug.cgi?id=168854
Reviewed by Brian Burg.
* UserInterface/Views/BezierEditor.css:
(.bezier-editor):
(body[dir=ltr] .bezier-editor):
(body[dir=rtl] .bezier-editor):
(.bezier-editor > .bezier-preview-timing):
(body[dir=ltr] .bezier-editor > .bezier-preview-timing):
(body[dir=rtl] .bezier-editor > .bezier-preview-timing):
(@keyframes bezierPreview):
(body[dir=rtl] .bezier-editor > .bezier-container):
(.bezier-editor > .number-input-container > input):
(body[dir=ltr] .bezier-editor > .number-input-container > input):
(body[dir=rtl] .bezier-editor > .number-input-container > input):
* UserInterface/Views/SpringEditor.css:
(.spring-editor > .spring-timing):
(.spring-editor > .spring-timing::before):
(.spring-editor > .spring-timing::after):
(body[dir=ltr] .spring-editor > .spring-timing::before, body[dir=rtl] .spring-editor > .spring-timing::after):
(body[dir=ltr] .spring-editor > .spring-timing::after, body[dir=rtl] .spring-editor > .spring-timing::before):
(.spring-editor > .number-input-container > .number-input-row > input):
* UserInterface/Views/SpringEditor.js:
(WebInspector.SpringEditor.prototype._updatePreviewAnimation):
2017-02-25 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: RTL: Elements tab Styles sidebar label/arrows need adjustment
https://bugs.webkit.org/show_bug.cgi?id=168746
Reviewed by Brian Burg.
* UserInterface/Views/ScopeRadioButtonNavigationItem.css:
(.scope-radio-button-navigation-item):
(.scope-radio-button-navigation-item > .scope-radio-button-item-select):
(body[dir=ltr] .scope-radio-button-navigation-item > .scope-radio-button-item-select):
(body[dir=rtl] .scope-radio-button-navigation-item > .scope-radio-button-item-select):
(.scope-radio-button-navigation-item > .scope-radio-button-item-select:focus):
(.scope-radio-button-navigation-item > .arrows):
(body[dir=ltr] .scope-radio-button-navigation-item > .arrows):
(body[dir=rtl] .scope-radio-button-navigation-item > .arrows):
2017-02-25 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: copying a search result out of Search Tab navigation sidebar does nothing
https://bugs.webkit.org/show_bug.cgi?id=167074
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WebInspector._copy):
* UserInterface/Views/SearchTabContentView.js:
(WebInspector.SearchTabContentView.prototype.handleCopyEvent):
Provide the container TabContentView with the opportunity to intercept the copy event.
* UserInterface/Models/SourceCodeTextRange.js:
(WebInspector.SourceCodeTextRange.prototype.get synthesizedTextValue):
* UserInterface/Views/SearchResultTreeElement.js:
(WebInspector.SearchResultTreeElement.prototype.get synthesizedTextValue):
Generate a string with the format `${url}:${lineNumber}:${resultLine}`.
2017-02-25 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: RTL: Styles - Rules sidebar icons are misaligned
https://bugs.webkit.org/show_bug.cgi?id=168807
Reviewed by Brian Burg.
* UserInterface/Views/CSSStyleDeclarationSection.css:
(.style-declaration-section > .header):
(body[dir=ltr] .style-declaration-section > .header):
(body[dir=rtl] .style-declaration-section > .header):
(.style-declaration-section.locked > .header > .locked-icon):
(body[dir=ltr] .style-declaration-section.locked > .header > .locked-icon):
(body[dir=rtl] .style-declaration-section.locked > .header > .locked-icon):
(.style-declaration-section > .header > .icon):
(body[dir=ltr] .style-declaration-section > .header > .icon):
(body[dir=rtl] .style-declaration-section > .header > .icon):
(.style-declaration-section > .header > textarea):
(body[dir=ltr] .style-declaration-section > .header > textarea):
(body[dir=rtl] .style-declaration-section > .header > textarea):
(.style-declaration-section.invalid-selector > .header > .icon):
* UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
(.sidebar > .panel.details.css-style > .content):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
(body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
(body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
(body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
(body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
(.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
(body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
(body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
* UserInterface/Views/Variables.css:
(:root):
2017-02-25 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: RTL: disclosure triangles in details section headers should be flipped and aligned right
https://bugs.webkit.org/show_bug.cgi?id=168283
Reviewed by Brian Burg.
* UserInterface/Views/DetailsSection.css:
(.details-section):
(.details-section > .header):
(body[dir=ltr] .details-section > .header):
(body[dir=rtl] .details-section > .header):
(.details-section > .header > .options > .navigation-bar):
(body[dir=ltr] .details-section > .header > :matches(label, .node-link, .go-to-arrow, .options > .navigation-bar), body[dir=rtl] .details-section > .header::before):
(body[dir=ltr] .details-section > .header::before, body[dir=rtl] .details-section > .header > :matches(label, .node-link, .go-to-arrow, .options > .navigation-bar)):
(.details-section > .header::before):
(body[dir=rtl] .details-section > .header::before):
(.details-section > .header > label):
(.details-section > .header > label > input[type="checkbox"]):
(body[dir=ltr] .details-section > .header > label > input[type="checkbox"]):
(body[dir=rtl] .details-section > .header > label > input[type="checkbox"]):
(.details-section > .header .go-to-arrow):
(body[dir=ltr] .details-section > .header .go-to-arrow):
(body[dir=rtl] .details-section > .header .go-to-arrow):
(.details-section > .content > .group > .row.simple > .label):
(body[dir=ltr] .details-section > .content > .group > .row.simple > .label):
(body[dir=rtl] .details-section > .content > .group > .row.simple > .label):
(.details-section > .content > .group > .row.simple > .value):
(body[dir=ltr] .details-section > .content > .group > .row.simple > .value):
(body[dir=rtl] .details-section > .content > .group > .row.simple > .value):
(.details-section > .content > .group > .row.simple > .value .go-to-arrow):
(body[dir=ltr] .details-section > .content > .group > .row.simple > .value .go-to-arrow):
(body[dir=rtl] .details-section > .content > .group > .row.simple > .value .go-to-arrow):
(.details-section > .header > :matches(.node-link, .go-to-arrow)): Deleted.
2017-02-24 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: RTL: add support for Error page
https://bugs.webkit.org/show_bug.cgi?id=168855
Reviewed by Brian Burg.
* UserInterface/Debug/UncaughtExceptionReporter.css:
(.uncaught-exception-sheet):
(body[dir=ltr] .uncaught-exception-sheet):
(body[dir=rtl] .uncaught-exception-sheet):
(.uncaught-exception-sheet h1 > img):
(body[dir=ltr] .uncaught-exception-sheet h1 > img):
(body[dir=rtl] .uncaught-exception-sheet h1 > img):
(.uncaught-exception-sheet h2 > img):
(body[dir=ltr] .uncaught-exception-sheet h2 > img):
(body[dir=rtl] .uncaught-exception-sheet h2 > img):
(.uncaught-exception-sheet dd):
(body[dir=ltr] .uncaught-exception-sheet dd):
(body[dir=rtl] .uncaught-exception-sheet dd):
(.uncaught-exception-sheet ul):
(body[dir=ltr] .uncaught-exception-sheet ul):
(body[dir=rtl] .uncaught-exception-sheet ul):
2017-02-24 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Uncaught Exception: Unknown angle units "undefined"
https://bugs.webkit.org/show_bug.cgi?id=168851
Reviewed by Brian Burg.
* UserInterface/Views/GradientEditor.js:
(WebInspector.GradientEditor.prototype._gradientTypeChanged):
2017-02-24 Jon Lee <jonlee@apple.com>
Alias "system-ui" for the System font name
https://bugs.webkit.org/show_bug.cgi?id=151493
Reviewed by Tim Horton and Joseph Pecoraro.
* UserInterface/Models/CSSKeywordCompletions.js: Ditto.
2017-02-23 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: RTL: DOM Tree spacing is wrong
https://bugs.webkit.org/show_bug.cgi?id=168744
Reviewed by Brian Burg.
* UserInterface/Base/Utilities.js:
(Element.prototype.totalOffsetRight):
* UserInterface/Views/DOMTreeOutline.css:
(.tree-outline.dom):
(.tree-outline.dom ol):
(body[dir=ltr] .tree-outline.dom ol):
(body[dir=rtl] .tree-outline.dom ol):
(.tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
(body[dir=ltr] .tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
(body[dir=rtl] .tree-outline.dom li:matches(.hovered, .selected) + ol.children.expanded):
(.tree-outline.dom li.selected + ol.children.expanded):
(.tree-outline.dom li):
(body[dir=ltr] .tree-outline.dom li):
(body[dir=rtl] .tree-outline.dom li):
(.tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
(body[dir=rtl] .tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
(body[dir=ltr] .tree-outline.dom.single-node li):
(body[dir=rtl] .tree-outline.dom.single-node li):
(.tree-outline.dom li.parent):
(body[dir=ltr] .tree-outline.dom li.parent):
(body[dir=rtl] .tree-outline.dom li.parent):
(body[dir=ltr] .tree-outline.dom li .html-tag.close):
(body[dir=rtl] .tree-outline.dom li .html-tag.close):
(.tree-outline.dom li.parent::before):
(body[dir=rtl] .tree-outline.dom li.parent::before):
(body[dir=ltr] .tree-outline.dom li.parent::before):
(.tree-outline.dom li.parent.shadow::after):
(body[dir=ltr] .tree-outline.dom li.parent.shadow::after):
(body[dir=rtl] .tree-outline.dom li.parent.shadow::after):
(.tree-outline.dom.single-node li): Deleted.
(.tree-outline.dom li .html-tag.close): Deleted.
* UserInterface/Views/TreeElement.js:
(WebInspector.TreeElement.prototype.isEventWithinDisclosureTriangle):
Calculate the position of the ::before triangle based on the layout direction.
2017-02-23 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: RTL: navigation sidebar section disclosure triangles and tree element icons should be aligned right
https://bugs.webkit.org/show_bug.cgi?id=168284
Reviewed by Brian Burg.
* UserInterface/Views/TreeOutline.css:
(.tree-outline,):
(.tree-outline.large .item):
(body[dir=ltr] .tree-outline .item :matches(.disclosure-button, .icon)):
(body[dir=rtl] .tree-outline .item :matches(.disclosure-button, .icon)):
(body[dir=ltr] .tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon):
(body[dir=rtl] .tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon):
(.tree-outline .item .disclosure-button):
(body[dir=rtl] .tree-outline .item .disclosure-button):
(.tree-outline .item .icon):
(body[dir=ltr] .tree-outline .item .icon):
(body[dir=rtl] .tree-outline .item .icon):
(.tree-outline.large .item .icon):
(.tree-outline .item .status):
(body[dir=ltr] .tree-outline .item .status):
(body[dir=rtl] .tree-outline .item .status):
(.tree-outline:not(.hide-disclosure-buttons) .item:not(.parent) > .icon): Deleted.
* UserInterface/Views/TreeOutline.js:
(WebInspector.TreeOutline._generateStyleRulesIfNeeded):
2017-02-22 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: RTL: Sidebar borders are on the wrong side
https://bugs.webkit.org/show_bug.cgi?id=168743
Reviewed by Matt Baker.
* UserInterface/Views/Sidebar.css:
(body[dir=ltr] .sidebar.right > .resizer, body[dir=rtl] .sidebar.left > .resizer):
(body[dir=ltr] .sidebar.left > .resizer, body[dir=rtl] .sidebar.right > .resizer):
(body[dir=ltr] .sidebar.left, body[dir=rtl] .sidebar.right):
(body[dir=ltr] .sidebar.right, body[dir=rtl] .sidebar.left):
(.sidebar.right > .resizer): Deleted.
(.sidebar.left > .resizer): Deleted.
(.sidebar.left): Deleted.
(.sidebar.right): Deleted.
* UserInterface/Views/Sidebar.js:
(WebInspector.Sidebar.prototype.resizerDragging):
Reverse the change if the direction is RTL.
2017-02-22 Brian Burg <bburg@apple.com>
Web Inspector: RTL: Settings tab labels need adjustment
https://bugs.webkit.org/show_bug.cgi?id=168497
Reviewed by Matt Baker.
Flip margins. Use 'text-align: end' instead of manually choosing
right and left based on body[dir].
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings > .setting-container > .setting-name):
(body[dir=ltr] .content-view.settings > .setting-container > .setting-name):
(body[dir=rtl] .content-view.settings > .setting-container > .setting-name):
(.content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]):
(body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]):
(body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]):
(.content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
(body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
(body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
2017-02-21 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Prefer Resources tab over Network tab when showing files
https://bugs.webkit.org/show_bug.cgi?id=168021
Reviewed by Timothy Hatcher.
* UserInterface/Base/Main.js:
(WebInspector.handlePossibleLinkClick):
(WebInspector.openURL):
Add `options` parameter to provide greater customization.
* UserInterface/Views/TabBrowser.js:
(WebInspector.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
Add logic for `ignoreNetworkTab` option that will ignore instances of NetworkTabContentView.
* UserInterface/Controllers/BreakpointPopoverController.js:
(WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems):
* UserInterface/Protocol/InspectorFrontendAPI.js:
(InspectorFrontendAPI.showMainResourceForFrame):
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.tokenTrackingControllerHighlightedRangeWasClicked.showRangeInSourceCode):
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WebInspector.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty):
* UserInterface/Views/ContextMenuUtilities.js:
(WebInspector.appendContextMenuItemsForSourceCode):
* UserInterface/Views/DOMTreeContentView.js:
(WebInspector.DOMTreeContentView.prototype._mouseWasClicked.followLink):
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._populateTagContextMenu):
(WebInspector.DOMTreeElement.prototype._showCustomElementDefinition):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/NetworkTimelineView.js:
(WebInspector.NetworkTimelineView.prototype.showContentViewForTreeElement):
* UserInterface/Views/ObjectTreeBaseTreeElement.js:
(WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype._dataGridNodeGoToArrowClicked):
* UserInterface/Views/SearchSidebarPanel.js:
(WebInspector.SearchSidebarPanel.prototype._treeSelectionDidChange):
(WebInspector.SearchSidebarPanel.prototype._treeElementDoubleClick):
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):
* UserInterface/Views/TimelineDataGrid.js:
(WebInspector.TimelineDataGrid.prototype._popoverCallStackTreeSelectionDidChange):
* UserInterface/Views/VisualStyleSelectorTreeItem.js:
(WebInspector.VisualStyleSelectorTreeItem.prototype.populateContextMenu):
Change arguments of functions to change content views to ignore the Network tab.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView.prototype.hasRepresentedObject):
* UserInterface/Views/NetworkSidebarPanel.js:
(WebInspector.NetworkSidebarPanel.prototype.hasRepresentedObject):
* UserInterface/Views/NetworkTabContentView.js:
(WebInspector.NetworkTabContentView.prototype.canShowRepresentedObject):
Ensure that the Network tab can only display resources that it has entries for in its view.
2017-02-21 Brian Burg <bburg@apple.com>
Web Inspector: RTL: console scope bar's unread message indicator is misaligned
https://bugs.webkit.org/show_bug.cgi?id=168625
Reviewed by Matt Baker.
* UserInterface/Views/LogContentView.css:
(.log-scope-bar > li.unread::before):
(body[dir=ltr] .log-scope-bar > li.unread::before):
(body[dir=rtl] .log-scope-bar > li.unread::before):
2017-02-20 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Tooltip for "Show console tab" should read "Show Console tab"
https://bugs.webkit.org/show_bug.cgi?id=168630
<rdar://problem/30621662>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView):
2017-02-20 Brian Burg <bburg@apple.com>
Web Inspector: RTL: back/forward navigation buttons should not be flipped
https://bugs.webkit.org/show_bug.cgi?id=168275
<rdar://problem/30506897>
Reviewed by Matt Baker.
The leading button is always "back" and the trailing button is always "forward", but
in RTL the icons are swapped so that it still looks like '< >' from left-to-right.
Rename the two arrows in the SVG to "left" and "right" arrows, and use them appropriately
in ContentBrowser for back-forward icons based on the layout direction.
* UserInterface/Images/BackForwardArrows.svg:
* UserInterface/Views/ContentBrowser.js:
(WebInspector.ContentBrowser):
* UserInterface/Views/FindBanner.css:
(.find-banner > button.segmented.left > .glyph):
(.find-banner > button.segmented.left:active:not(:disabled) > .glyph):
(.find-banner > button.segmented.right > .glyph):
(.find-banner > button.segmented.right:active:not(:disabled) > .glyph):
2017-02-20 Brian Burg <bburg@apple.com>
Web Inspector: RTL: hierarchical path components need spacing and icon adjustments
https://bugs.webkit.org/show_bug.cgi?id=168581
Reviewed by Matt Baker.
Flip a bunch of padding, margin, and offsets. Flip the chevron using a CSS transform.
* UserInterface/Views/HierarchicalPathComponent.css:
(.hierarchical-path-component):
(.hierarchical-path-component > .icon):
(.hierarchical-path-component > :matches(.icon, .selector-arrows)):
(body[dir=ltr] .hierarchical-path-component > :matches(.icon, .selector-arrows)):
(body[dir=rtl] .hierarchical-path-component > :matches(.icon, .selector-arrows)):
(.hierarchical-path-component > .selector-arrows):
(.hierarchical-path-component > select):
(body[dir=ltr] .hierarchical-path-component > select):
(body[dir=rtl] .hierarchical-path-component > select):
(.hierarchical-path-component > .separator):
(body[dir=ltr] .hierarchical-path-component > .separator):
(body[dir=rtl] .hierarchical-path-component > .separator):
(.hierarchical-path-component.text-only):
(body[dir=ltr] .hierarchical-path-component.text-only):
(body[dir=rtl] .hierarchical-path-component.text-only):
(body[dir=ltr] .hierarchical-path-component.text-only > select):
(body[dir=rtl] .hierarchical-path-component.text-only > select):
2017-02-20 Brian Burg <bburg@apple.com>
Web Inspector: RTL: adjust positioning of scope bar items with multiple values
https://bugs.webkit.org/show_bug.cgi?id=168575
Reviewed by Matt Baker.
Mirror the leading margin as necessary. Adjust the <select> positioning
so that the popup is really close to the scope bar item's position.
* UserInterface/Views/ScopeBar.css:
(body[dir=ltr] .scope-bar > li.multiple > select):
(body[dir=rtl] .scope-bar > li.multiple > select):
(.scope-bar > li.multiple > .arrows):
(body[dir=ltr] .scope-bar > li.multiple > .arrows):
(body[dir=rtl] .scope-bar > li.multiple > .arrows):
2017-02-20 Brian Burg <bburg@apple.com>
Web Inspector: RTL: sidebar expand/collapse icons need to be flipped
https://bugs.webkit.org/show_bug.cgi?id=168276
<rdar://problem/30506999>
Reviewed by Matt Baker.
The sidebars themselves are already flipped due to the layout direction change, but the
icons have a directional design and need to be manually flipped based on the layout direction.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WebInspector.ContentBrowserTabContentView):
2017-02-17 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Use Maps in FrameResourceManager instead of objects
https://bugs.webkit.org/show_bug.cgi?id=168549
<rdar://problem/30590110>
Reviewed by Joseph Pecoraro.
Use Map for _frameIdentifierMap and _resourceRequestIdentifierMap.
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype.initialize):
(WebInspector.FrameResourceManager.prototype.get frames):
(WebInspector.FrameResourceManager.prototype.frameForIdentifier):
(WebInspector.FrameResourceManager.prototype.frameDidDetach):
(WebInspector.FrameResourceManager.prototype.resourceRequestWillBeSent):
(WebInspector.FrameResourceManager.prototype.markResourceRequestAsServedFromMemoryCache):
(WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
(WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
(WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveData):
(WebInspector.FrameResourceManager.prototype.resourceRequestDidFinishLoading):
(WebInspector.FrameResourceManager.prototype.resourceRequestDidFailLoading):
(WebInspector.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
(WebInspector.FrameResourceManager.prototype._processMainFrameResourceTreePayload):
(WebInspector.FrameResourceManager.prototype._createFrame):
2017-02-17 Brian Burg <bburg@apple.com>
Web Inspector: RTL: Inspector window should dock to the left when using RTL layout direction
https://bugs.webkit.org/show_bug.cgi?id=168273
<rdar://problem/29949325>
Reviewed by Matt Baker.
Add the ability to dock Web Inspector to the left of the inspected view.
The frontend decides whether the Dock to Side button docks left or right
based on the current layout direction.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
Rename the "Dock to Right" button to "Dock to Side" instead. It's easier to just
have one button than to try and conditionally hide one or the other based on
the layout direction. Change the dock callback and the icon used for the button
depending on layout direction.
(WebInspector.resolvedLayoutDirection):
Refactor getLayoutDirection() to resolvedLayoutDirection() so callers get back
either "ltr" or "rtl".
Flip the dock side if layout direction changes while docked to the side.
Adjust various code paths to account for the existing of left docking. In particular,
resize rejection needs special-casing for resizing leftward from beyond the right side
of the Inspector view when it is docked to the left. Improve related comments since it
took me an unbelievable amount of time to understand what this code is supposed to do.
* UserInterface/Views/Main.css:
(body.docked.right):
(body.docked.left #docked-resizer):
(body.docked:matches(.right, .left) #navigation-sidebar.collapsed > .resizer):
(body.docked.right #navigation-sidebar.collapsed > .resizer): Deleted.
Add .docked.left analogues to rules for .docked.right.
2017-02-17 Brian Burg <bburg@apple.com>
Web Inspector: RTL: add TabBar support for RTL layout
https://bugs.webkit.org/show_bug.cgi?id=168446
Reviewed by Matt Baker.
There are two types of changes needed:
- Flip leading and trailing borders and margins for the tab items.
- Enumerate tabs in reverse order when performing manual layout.
Along the way, I added some color variables local to TabBar.css to
reduce the number of redundant border-style and color declarations.
* UserInterface/Base/Main.js:
Change this to resolvedLayoutDirection(), and resolve "System" to "ltr" or "rtl".
This makes it suitable for use in manual layout without worrying about "System".
Fix the one existing use-site to not do its own resolution of "System".
* UserInterface/Views/TabBar.css:
Define commonly used colors and border styles and adopt var() usages.
Flip borders that should vary in RTL vs LTR, but not all of them. In
many cases, the border is not direction-dependent and looks the same
on both sides. Also, no need to swap animated properties as all manual
layout is done from the left edge.
(.tab-bar):
(body.window-inactive .tab-bar):
(.tab-bar > .top-border):
(body.window-inactive .tab-bar > .top-border):
(.tab-bar > .item):
(body[dir=ltr] .tab-bar > :nth-child(n + 2 of .item),):
(body[dir=rtl] .tab-bar > :nth-child(n + 2 of .item),):
(.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover):
(body[dir=ltr] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,):
(body[dir=rtl] .tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,):
(body.window-inactive .tab-bar > .item):
(body[dir=ltr].window-inactive .tab-bar > .item):
(body[dir=rtl].window-inactive .tab-bar > .item):
(.tab-bar > .item > .close):
(body[dir=ltr] .tab-bar > .item > .close):
(body[dir=rtl] .tab-bar > .item > .close):
(.tab-bar > .item:not(.pinned) > .flex-space:last-child):
(body[dir=ltr] .tab-bar > .item:not(.pinned) > .flex-space:last-child):
(body[dir=rtl] .tab-bar > .item:not(.pinned) > .flex-space:last-child):
(.tab-bar > .item > .title):
(body[dir=ltr] .tab-bar > .item > .title):
(body[dir=rtl] .tab-bar > .item > .title):
(.tab-bar.collapsed > .item > .close):
(body[dir=ltr] .tab-bar.collapsed > .item > .close):
(body[dir=rtl] .tab-bar.collapsed > .item > .close):
* UserInterface/Views/TabBar.js:
When doing manual layout, keep doing calculations with respect to the left edge
and keep the list of tab items in logical (LTR) order, as in the DOM. But, when
manually positioning tab items for RTL layout direction, reverse the tab items
so that it matches the screen/layout order of the flipped flexbox items.
(WebInspector.TabBar.prototype.insertTabBarItem):
(WebInspector.TabBar.prototype.removeTabBarItem.animateTabs):
In RTL, put extra space after closing a tab to the left of normal tabs. This
matches the behavior of LTR, but requires some additional measurement since we
still position tabs using `left` and can't simply infer the leftover space.
(WebInspector.TabBar.prototype._tabBarItemsFromLeftToRight): Added.
(WebInspector.TabBar.prototype._handleMouseMoved):
(WebInspector.TabBar.prototype._handleMouseUp):
2017-02-17 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Zoom level UI out of sync with setting value
https://bugs.webkit.org/show_bug.cgi?id=168522
Reviewed by Brian Burg.
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView):
Trigger a layout whenever the zoomFactor setting is changed. This is needed since the
zoomFactor setting can also be modified by global keyboard shortcuts.
2017-02-17 Brian Burg <bburg@apple.com>
Web Inspector: Loc: Zoom level in Settings tab needs to use localized formatting
https://bugs.webkit.org/show_bug.cgi?id=168465
Reviewed by Matt Baker.
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype.layout):
(WebInspector.SettingsTabContentView):
2017-02-17 Brian Burg <bburg@apple.com>
Web Inspector: RTL: CodeMirror text editor instances have scrollbars on left and right
https://bugs.webkit.org/show_bug.cgi?id=168274
Reviewed by Matt Baker.
CodeMirror doesn't draw its own scrollbar correctly when content is in RTL,
so it draws an extra scrollbar on the right side. And, for the majority of
cases, we don't want to view CSS / JS content aligned to the right.
Manually set the "dir" attribute for all CodeMirror editor instances to "ltr".
Clients can override this if custom RTL layout is available in a particular case.
* UserInterface/Views/CodeMirrorEditor.js:
(WebInspector.CodeMirrorEditor.create):
(WebInspector.CodeMirrorEditor):
2017-02-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Timeline DataGridNodes are lacking detail in title
https://bugs.webkit.org/show_bug.cgi?id=168529
<rdar://problem/30579959>
Reviewed by Brian Burg.
* UserInterface/Views/TimelineDataGridNode.js:
(WebInspector.TimelineDataGridNode.prototype.displayName):
Include detailed information for DataGridNode display names, since we
want to show maximum detail for records in the DataGrid.
2017-02-16 Brian Burg <bburg@apple.com>
Web Inspector: add DebugUI setting to manually override UI layout direction
https://bugs.webkit.org/show_bug.cgi?id=168222
Reviewed by Joseph Pecoraro.
Expose three layout direction settings:
- System (inherit system UI layout direction)
- LTR (the default regardless of system language)
- RTL (under development, only accessible via this menu)
* UserInterface/Base/Main.js:
The UI layout direction is normally only set once per frontend load.
There is no expectation on macOS that applications can switch dynamically.
But, for DebugUI purposes we need to switch the layout direction quickly.
Store the new setting and trigger a hard reload of the frontend page.
If the 'system' setting is specified, fall back to the system layout
direction as provided by InspectorFrontendHost.
* UserInterface/Base/Setting.js:
Add an application-level setting for (user interface) layout direction.
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView):
(WebInspector.SettingsTabContentView.prototype.layout):
(WebInspector.SettingsTabContentView.prototype.initialLayout): Deleted.
Make this a normal layout() method so that we can dirty the view
when DebugUI is turned on or off.
2017-02-16 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: popovers shouldn't be dismissed when Web Inspector window is dragged
https://bugs.webkit.org/show_bug.cgi?id=166935
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
(WebInspector._mouseDown): Created.
(WebInspector._dockedResizerMouseDown):
(WebInspector._moveWindowMouseDown):
Applies Popover.EventPreventDismissSymbol whenever a mousedown event is fired for an element
that controls the positioning or size of the WebInspector window.
* UserInterface/Views/Popover.js:
(WebInspector.Popover.prototype._handleEvent):
(WebInspector.Popover.EventPreventDismissSymbol):
Do not dismiss the popover if Popover.EventPreventDismissSymbol is applied to the event.
2017-02-15 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Request headers when copied & pasted should follow HTTP format, colon instead of tab
https://bugs.webkit.org/show_bug.cgi?id=168155
Reviewed by Matt Baker.
* UserInterface/Views/DataGrid.js:
(WebInspector.DataGrid):
(WebInspector.DataGrid.prototype.set copyTextDelimiter):
(WebInspector.DataGrid.prototype._copyTextForDataGridNode):
(WebInspector.DataGrid.prototype._copyTextForDataGridHeaders):
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel.prototype._createNameValueDataGrid):
Allow instances of DataGrid to change the delimiter between items when copying rows.
2017-02-15 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Split console should be allowed when docked bottom on Elements/Resources/Debugger/Storage tabs
https://bugs.webkit.org/show_bug.cgi?id=168385
Reviewed by Timothy Hatcher.
* UserInterface/Base/Main.js:
(WebInspector.updateDockedState):
If the new docked configuration does not support the split console, hide it.
* UserInterface/Views/DebuggerTabContentView.js:
(WebInspector.DebuggerTabContentView.prototype.get supportsSplitContentBrowser):
* UserInterface/Views/ElementsTabContentView.js:
(WebInspector.ElementsTabContentView.prototype.get supportsSplitContentBrowser):
* UserInterface/Views/ResourcesTabContentView.js:
(WebInspector.ResourcesTabContentView.prototype.get supportsSplitContentBrowser):
* UserInterface/Views/StorageTabContentView.js:
(WebInspector.StorageTabContentView.prototype.get supportsSplitContentBrowser):
2017-02-14 Brian Burg <bburg@apple.com>
Web Inspector: RTL: adjust padding of dashboard icons
https://bugs.webkit.org/show_bug.cgi?id=168340
Reviewed by Matt Baker.
Extract the direction-dependent padding into a "local" variable.
Use two rules to apply it to whichever is the leading side.
While we tend to use leading/trailing in Apple layout technologies,
I think the CSS logical properties specification sticks to using
-start and -end, so let's use that nomenclature where we can.
* UserInterface/Views/DefaultDashboardView.css:
(.toolbar .dashboard.default > .item > div):
(body[dir=ltr] .toolbar .dashboard.default > .item > div):
(body[dir=rtl] .toolbar .dashboard.default > .item > div):
2017-02-14 Eric Carlson <eric.carlson@apple.com>
[MediaStream] add navigator.getUserMedia for compatibility with legacy content
https://bugs.webkit.org/show_bug.cgi?id=168324
<rdar://problem/30513125>
Reviewed by Youenn Fablet.
* UserInterface/Models/NativeFunctionParameters.js:
2017-02-13 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: provide a way to show current value of CSS variables in style rules
https://bugs.webkit.org/show_bug.cgi?id=168172
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Images/CSSVariable.svg: Added.
* UserInterface/Models/TextMarker.js:
(WebInspector.TextMarker.Type):
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor._createInlineSwatches.update):
* UserInterface/Views/CodeMirrorTextMarkers.js:
(createCodeMirrorTextMarkers):
(createCodeMirrorVariableTextMarkers):
* UserInterface/Views/InlineSwatch.css:
(.inline-swatch.variable):
(.inline-swatch:matches(.bezier, .spring, .variable)):
(.inline-swatch:matches(.bezier, .spring, .variable):hover):
(.inline-swatch:matches(.bezier, .spring, .variable):active):
(.inline-swatch-variable-popover):
(.inline-swatch-variable-popover .CodeMirror):
(.inline-swatch-variable-popover .CodeMirror pre):
(.inline-swatch:matches(.bezier, .spring):hover): Deleted.
(.inline-swatch:matches(.bezier, .spring):active): Deleted.
* UserInterface/Views/InlineSwatch.js:
(WebInspector.InlineSwatch):
(WebInspector.InlineSwatch.prototype._fallbackValue):
(WebInspector.InlineSwatch.prototype._swatchElementClicked):
(WebInspector.InlineSwatch.prototype._valueEditorValueDidChange):
(WebInspector.InlineSwatch.Type):
2017-02-13 Matt Baker <mattbaker@apple.com>
REGRESSION(r188138): Web Inspector: cannot edit next/previous DOM attribute by using tab/shift-tab
https://bugs.webkit.org/show_bug.cgi?id=168120
<rdar://problem/30466065>
Reviewed by Joseph Pecoraro.
DOMTreeElement's attribute editing committed handler shouldn't early return
when a `moveDirection` has been specified.
* UserInterface/Views/DOMTreeElement.js:
2017-02-12 Brian Burg <bburg@apple.com>
Web Inspector: Assertion failed: !this._items.has(item) (at Collection.js:50)
https://bugs.webkit.org/show_bug.cgi?id=168212
Reviewed by Joseph Pecoraro.
When turning on DebugUI, WebKit-internal scripts were being added to the
Collection that is the represented object for the Extra Scripts folder.
This was not balanced out by removing the scripts when DebugUI is turned
off, so switching DebugUI on and off several times hit a multiple-add assertion.
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel.prototype._scriptWasRemoved):
Remove the script from its Collection if applicable.
2017-02-10 Matt Baker <mattbaker@apple.com>
Web Inspector: Debugger sidebar panel should not have multiple tree selections
https://bugs.webkit.org/show_bug.cgi?id=166000
<rdar://problem/29721988>
Reviewed by Timothy Hatcher.
The method for synchronizing tree element selection across a sidebar's
tree outlines fails for selections made during startup, because it depends
on events which are being suppressed.
This adds a new class, TreeOutlineGroup, which restricts tree element selection
inside a group of tree outlines by receiving messages directly from TreeElement.
* UserInterface/Main.html:
Add file for TreeOutlineGroup class.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WebInspector.ContentBrowserTabContentView.prototype._revealAndSelectRepresentedObject):
(WebInspector.ContentBrowserTabContentView):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
Update `createContentTreeOutline` calls for new signature.
* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel):
Replace _visibleContentTreeOutlines with a TreeOutlineGroup, which
contains the single-selection behavior previously handled by the sidebar.
(WebInspector.NavigationSidebarPanel.prototype.get contentTreeOutlines):
(WebInspector.NavigationSidebarPanel.prototype.get hasSelectedElement):
Implement using the sidebar's tree outline group.
(WebInspector.NavigationSidebarPanel.prototype.createContentTreeOutline):
Remove first parameter, which is always true.
(WebInspector.NavigationSidebarPanel.prototype.treeElementForRepresentedObject):
(WebInspector.NavigationSidebarPanel.prototype.saveStateToCookie):
(WebInspector.NavigationSidebarPanel.prototype.pruneStaleResourceTreeElements):
(WebInspector.NavigationSidebarPanel.prototype._checkForEmptyFilterResults):
(WebInspector.NavigationSidebarPanel.prototype._updateFilter):
(WebInspector.NavigationSidebarPanel.prototype._checkOutlinesForPendingViewStateCookie):
(WebInspector.NavigationSidebarPanel.prototype.set contentTreeOutline): Deleted.
Remove unused setter.
(WebInspector.NavigationSidebarPanel.prototype.get visibleContentTreeOutlines): Deleted.
Renamed to contentTreeOutlines.
(WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineDidFocus): Deleted.
No longer needed.
(WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineTreeSelectionDidChange): Deleted.
Selection across trees handled by the tree outline group.
* UserInterface/Views/TreeElement.js:
(WebInspector.TreeElement.prototype.select):
Inform the element's tree outline group (if any), of the selection changed.
* UserInterface/Views/TreeOutlineGroup.js: Added.
(WebInspector.TreeOutlineGroup):
(WebInspector.TreeOutlineGroup.groupForTreeOutline):
(WebInspector.TreeOutlineGroup.prototype.get selectedTreeElement):
(WebInspector.TreeOutlineGroup.prototype.itemAdded):
Associate tree outline with the group and wrap tree elements. If the
incoming tree outline has a selection, deselect the group's currently
selected tree element.
(WebInspector.TreeOutlineGroup.prototype.itemRemoved):
Disassociate the tree outline from the group.
(WebInspector.TreeOutlineGroup.prototype.didSelectTreeElement):
Called by TreeElement when it becomes selected.
(WebInspector.TreeOutlineGroup.prototype._removeConflictingTreeSelections):
Deselect any selected items in all tree outlines belonging to the group,
except for the specified item.
2017-02-10 Matt Baker <mattbaker@apple.com>
Web Inspector: ContentViewContainer can have redundant back-forward entries after ContentView close
https://bugs.webkit.org/show_bug.cgi?id=168105
Reviewed by Joseph Pecoraro.
* UserInterface/Models/BackForwardEntry.js:
(WebInspector.BackForwardEntry.prototype.isEqual):
Make check for equal ContentView/cookie reusable.
* UserInterface/Views/ContentViewContainer.js:
(WebInspector.ContentViewContainer.prototype.showContentView):
Use BackForwardEntry.prototype.isEqual.
(WebInspector.ContentViewContainer.prototype.replaceContentView):
(WebInspector.ContentViewContainer.prototype.closeContentView):
Clean-up the BackForwardEntry list after changes that can cause
identical entries to become adjacent.
(WebInspector.ContentViewContainer.prototype._removeIdenticalAdjacentBackForwardEntries):
Remove consecutive entries with the same ContentView and cookie.
(WebInspector.ContentViewContainer):
(WebInspector.ContentViewContainer.closeAllContentViewsOfPrototype): Deleted.
Drive-by cleanup: removed dead code.
2017-02-10 Matt Baker <mattbaker@apple.com>
REGRESSION (r211829): Web Inspector: Elements tab is blank when added after page load
https://bugs.webkit.org/show_bug.cgi?id=168142
Reviewed by Brian Burg.
The Elements tab can be shown in two ways: by adding the Elements tab
from the "New Tab" tab, or via Inspect Element. In both cases we should
be checking that the ContentView exists, and create it if needed.
* UserInterface/Views/ElementsTabContentView.js:
(WebInspector.ElementsTabContentView.prototype.showRepresentedObject):
(WebInspector.ElementsTabContentView.prototype.shown):
2017-02-09 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: changing dock side from windowed to bottom should cause split console to collapse on Timeline and Network tabs
https://bugs.webkit.org/show_bug.cgi?id=167841
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
(WebInspector.updateDockedState):
2017-02-09 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Option+hover on -webkit-transform in Styles sidebar underlines only half the property
https://bugs.webkit.org/show_bug.cgi?id=167949
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
(WebInspector.CodeMirrorTokenTrackingController.prototype._updateHoveredTokenInfo):
Attempt to merge tokens (specifically the `text` and `start` values) if the either the
previous or next token is of the type "meta".
2017-02-09 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Remove legacy Navigator.webkitGetUserMedia
https://bugs.webkit.org/show_bug.cgi?id=168016
Reviewed by Youenn Fablet.
* UserInterface/Models/NativeFunctionParameters.js:
2017-02-08 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r211912.
https://bugs.webkit.org/show_bug.cgi?id=168034
http/tests/media/media-stream/disconnected-frame-permission-
denied.html should be updated (Requested by youenn on
#webkit).
Reverted changeset:
"[MediaStream] Remove legacy Navigator.webkitGetUserMedia"
https://bugs.webkit.org/show_bug.cgi?id=168016
http://trac.webkit.org/changeset/211912
2017-02-08 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Remove legacy Navigator.webkitGetUserMedia
https://bugs.webkit.org/show_bug.cgi?id=168016
Reviewed by Youenn Fablet.
* UserInterface/Models/NativeFunctionParameters.js:
2017-02-08 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r211907.
Broke the build
Reverted changeset:
"[MediaStream] Remove legacy Navigator.webkitGetUserMedia"
https://bugs.webkit.org/show_bug.cgi?id=168016
http://trac.webkit.org/changeset/211907
2017-02-08 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Remove legacy Navigator.webkitGetUserMedia
https://bugs.webkit.org/show_bug.cgi?id=168016
Reviewed by Youenn Fablet.
* UserInterface/Models/NativeFunctionParameters.js:
2017-02-07 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: gradient editor should allow switching the units of the 'angle' parameter
https://bugs.webkit.org/show_bug.cgi?id=166938
Reviewed by Brian Burg.
* UserInterface/Test.html:
Add WebInspector.Gradient for new model object tests.
* UserInterface/Models/Gradient.js:
(WebInspector.Gradient.fromString):
(WebInspector.LinearGradient):
(WebInspector.LinearGradient.fromComponents):
(WebInspector.LinearGradient.prototype.set angleValue):
(WebInspector.LinearGradient.prototype.get angleValue):
(WebInspector.LinearGradient.prototype.set angleUnits):
(WebInspector.LinearGradient.prototype.get angleUnits):
(WebInspector.LinearGradient.prototype.copy):
(WebInspector.LinearGradient.prototype.toString):
(WebInspector.LinearGradient.prototype._angleValueForUnits):
Rework part of WebInspector.LinearGradient to support units other than "deg".
* UserInterface/Views/GradientEditor.css:
(.gradient-editor > .gradient-angle > input[type="range"]):
(.gradient-editor > .gradient-angle > input[type="number"]):
* UserInterface/Views/GradientEditor.js:
(WebInspector.GradientEditor):
(WebInspector.GradientEditor.prototype.set gradient):
(WebInspector.GradientEditor.prototype._gradientTypeChanged):
(WebInspector.GradientEditor.prototype._angleValueChanged):
(WebInspector.GradientEditor.prototype._angleUnitsChanged):
(WebInspector.GradientEditor.prototype._angleChanged): Deleted.
Add <select> for each unit type that will change the units of the gradient.
2017-02-07 Matt Baker <mattbaker@apple.com>
Web Inspector: DOMTreeOutline becomes collapsed after switching back to Elements tab
https://bugs.webkit.org/show_bug.cgi?id=167924
Reviewed by Brian Burg.
* UserInterface/Views/DOMTreeOutline.js:
(WebInspector.DOMTreeOutline.prototype.update):
Drive-by fix: move variable initialization below the early return.
* UserInterface/Views/ElementsTabContentView.js:
(WebInspector.ElementsTabContentView.prototype.shown): Deleted.
Calling this._showDOMTreeContentView isn't necessary. The base class
implementation will call `shown` on the content view.
2017-02-06 Fujii Hironori <Hironori.Fujii@sony.com>
Web Inspector: sibling elements's disclosure triangles aren't vertically aligned in DOM tree outline in certain ports
https://bugs.webkit.org/show_bug.cgi?id=167568
Reviewed by Brian Burg.
The triangle has 13px height and has float:left. If the line-height
is smaller than 13px, the sibling element's triangles aren't
vertically aligned.
* UserInterface/Views/DOMTreeOutline.css:
(.tree-outline.dom li.parent): Set line-height 13px explicitly.
2017-02-03 Matt Baker <mattbaker@apple.com>
Web Inspector: Add stroke-linecap property values to CSS autocompletion
https://bugs.webkit.org/show_bug.cgi?id=167778
Reviewed by Joseph Pecoraro.
* UserInterface/Models/CSSKeywordCompletions.js:
Add autocompletion values for fill-rule and stroke-linecap.
2017-02-02 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: can't jump from Search Tab result to see resource in other tabs (Resource, Debugger, Network)
https://bugs.webkit.org/show_bug.cgi?id=167072
Reviewed by Timothy Hatcher.
* UserInterface/Base/Main.js:
(WebInspector.tabContentViewForRepresentedObject):
(WebInspector.showRepresentedObject):
(WebInspector.showMainFrameDOMTree):
(WebInspector.showSourceCodeForFrame):
(WebInspector.showSourceCode):
(WebInspector.showSourceCodeLocation):
(WebInspector.showOriginalUnformattedSourceCodeLocation):
(WebInspector.showOriginalOrFormattedSourceCodeLocation):
(WebInspector.showOriginalOrFormattedSourceCodeTextRange):
(WebInspector.showResourceRequest):
Rework parameters to add optional `options` dictionary that can be used to indicate
additional functionality.
* UserInterface/Views/TabBrowser.js:
(WebInspector.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
Ignore instances of SearchTabContentView as it can display content views for all types of
searchable data. Determined by a newly added optional `options` parameter.
* UserInterface/Base/Utilities.js:
(Object.shallowMerge):
Merges the keys of two objects into a new one.
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WebInspector.ComputedStyleDetailsPanel.prototype._goToRegionFlowArrowWasClicked):
(WebInspector.ComputedStyleDetailsPanel.prototype._goToContentFlowArrowWasClicked):
* UserInterface/Views/SearchSidebarPanel.js:
(WebInspector.SearchSidebarPanel.prototype.performSearch.createTreeElementForMatchObject):
(WebInspector.SearchSidebarPanel.prototype.performSearch.resourceCallback):
(WebInspector.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
(WebInspector.SearchSidebarPanel.prototype.performSearch.searchScripts.scriptCallback):
(WebInspector.SearchSidebarPanel.prototype.performSearch.searchScripts):
(WebInspector.SearchSidebarPanel.prototype.performSearch.domSearchResults):
(WebInspector.SearchSidebarPanel.prototype.performSearch.domCallback):
(WebInspector.SearchSidebarPanel.prototype.performSearch):
(WebInspector.SearchSidebarPanel.prototype._treeElementDoubleClick):
* UserInterface/Views/TreeElement.js:
(WebInspector.TreeElement.treeElementDoubleClicked):
Add an event dispatch whenever a TreeElement is double clicked via the `dblclick` event.
2017-02-01 Yusuke Suzuki <utatane.tea@gmail.com>
Web Inspector: Upgrade Esprima to the latest one to support dynamic import
https://bugs.webkit.org/show_bug.cgi?id=167698
Reviewed by Joseph Pecoraro.
* UserInterface/External/Esprima/esprima.js:
Update to Esprima@5307e30 (4.0.0-dev).
* UserInterface/Models/ScriptSyntaxTree.js:
(WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration.gatherIdentifiers):
(WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration):
(WebInspector.ScriptSyntaxTree.prototype._recurse):
(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
(WebInspector.ScriptSyntaxTree):
* UserInterface/Workers/Formatter/ESTreeWalker.js:
(ESTreeWalker.prototype._walkChildren):
(ESTreeWalker):
Add new nodes, SpreadProperty, RestProperty, and Import.
SpreadProperty and RestProperty are the part of ES2018 rest and spread properties.
https://github.com/sebmarkbage/ecmascript-rest-spread
Import is dynamic import node. The syntax is similar to Super.
https://github.com/tc39/proposal-dynamic-import
* UserInterface/Workers/Formatter/EsprimaFormatter.js:
(EsprimaFormatter.prototype._handleTokenAtNode):
2017-02-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove keyboard shortcut to close tab - does not match expectations
https://bugs.webkit.org/show_bug.cgi?id=167672
Reviewed by Timothy Hatcher.
* UserInterface/Views/TabBrowser.js:
(WebInspector.TabBrowser):
2017-01-31 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Tooltip text should not end in a period
https://bugs.webkit.org/show_bug.cgi?id=167130
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/BezierEditor.js:
(WebInspector.BezierEditor):
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WebInspector.CSSStyleDeclarationSection.prototype._handleSelectorPaste):
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype._createTextMarkerForPropertyIfNeeded):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility.accessibilityPropertiesCallback):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel):
* UserInterface/Views/GeneralTabBarItem.js:
(WebInspector.GeneralTabBarItem):
* UserInterface/Views/HeapSnapshotContentView.js:
(WebInspector.HeapSnapshotInstancesContentView):
(WebInspector.HeapSnapshotObjectGraphContentView):
* UserInterface/Views/InlineSwatch.js:
(WebInspector.InlineSwatch):
* UserInterface/Views/ObjectTreePropertyTreeElement.js:
(WebInspector.ObjectTreePropertyTreeElement.prototype._updateEntries):
(WebInspector.ObjectTreePropertyTreeElement.prototype._updateProperties):
* UserInterface/Views/ObjectTreeView.js:
(WebInspector.ObjectTreeView.prototype._updateEntries):
(WebInspector.ObjectTreeView.prototype._updateProperties):
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar):
* UserInterface/Views/SpringEditor.js:
(WebInspector.SpringEditor):
* UserInterface/Views/TypeTreeElement.js:
(WebInspector.TypeTreeElement.prototype.onpopulate):
* UserInterface/Views/TypeTreeView.js:
(WebInspector.TypeTreeView.prototype._populate):
* UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
(WebInspector.VisualStyleCommaSeparatedKeywordEditor):
* UserInterface/Views/VisualStyleDetailsPanel.js:
(WebInspector.VisualStyleDetailsPanel.prototype._generateSection.createOptionsElement):
* UserInterface/Views/VisualStylePropertyEditorLink.js:
(WebInspector.VisualStylePropertyEditorLink.prototype.set linked):
* UserInterface/Views/VisualStylePropertyNameInput.js:
(WebInspector.VisualStylePropertyNameInput):
* UserInterface/Views/VisualStyleSelectorSection.js:
(WebInspector.VisualStyleSelectorSection):
* UserInterface/Views/VisualStyleSelectorTreeItem.js:
(WebInspector.VisualStyleSelectorTreeItem.prototype._updateCheckboxTitle):
(WebInspector.VisualStyleSelectorTreeItem.prototype._updateSelectorIcon):
2017-01-31 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: add CSS color keyword entries for all grey/gray variations
https://bugs.webkit.org/show_bug.cgi?id=167668
Reviewed by Matt Baker.
* UserInterface/Models/Color.js:
(WebInspector.Color.Keywords):
2017-01-31 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Network tab: provide a way to preserve log on navigation
https://bugs.webkit.org/show_bug.cgi?id=166908
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
(WebInspector.settings):
Add clearNetworkOnNavigate global setting.
* UserInterface/Views/NetworkGridContentView.css:
(.content-view.network-grid > .data-grid .preserved:not(.selected) .cell-content):
(.content-view.network-grid > .data-grid .preserved:not(.selected) .cell-content .timeline-record-bar > .segment):
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView):
(WebInspector.NetworkGridContentView.prototype._mainResourceDidChange):
* UserInterface/Views/NetworkSidebarPanel.css:
(.sidebar > .panel.navigation.network .tree-outline > .preserved:not(.selected) > :not(.status)):
(.sidebar > .panel.navigation.network .tree-outline > .preserved:not(.selected) > .icon):
* UserInterface/Views/NetworkSidebarPanel.js:
(WebInspector.NetworkSidebarPanel):
(WebInspector.NetworkSidebarPanel.prototype._mainResourceDidChange):
Add styling to preserved network records.
* UserInterface/Controllers/TimelineManager.js:
(WebInspector.TimelineManager.prototype._mainResourceDidChange):
Only reset the persistent network timeline if the clearNetworkOnNavigate setting is true.
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype.initialLayout):
(WebInspector.SettingsTabContentView):
Add checkbox and spacers for new setting.
2017-01-31 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: User Settings: Secondary-clicking the New Tab and Settings tabs should not produce a context menu
https://bugs.webkit.org/show_bug.cgi?id=167651
Reviewed by Joseph Pecoraro.
* UserInterface/Views/PinnedTabBarItem.js:
(WebInspector.PinnedTabBarItem):
(WebInspector.PinnedTabBarItem.prototype._handleContextMenuEvent):
Always preventDefault() to ensure that the system context menu is never shown.
* UserInterface/Views/TabBar.js:
(WebInspector.TabBar):
(WebInspector.TabBar.prototype.get newTabTabBarItem):
(WebInspector.TabBar.prototype._handleNewTabContextMenu): Deleted.
Move the event dispatch to WebInspector.PinnedTabBarItem to give all instances a contextmenu
event handler.
* UserInterface/Views/TabBrowser.js:
(WebInspector.TabBrowser):
2017-01-31 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Address some ESLint warnings
https://bugs.webkit.org/show_bug.cgi?id=167634
Reviewed by Brian Burg.
* UserInterface/Base/DOMUtilities.js:
(WebInspector.linkifyNodeReference):
(isSimiliarNode):
(WebInspector.xpathIndex):
These empty statements were supposed to be returns!
* UserInterface/Base/Main.js:
* UserInterface/Models/CSSProperty.js:
(WebInspector.CSSProperty.prototype.get relatedLonghandProperties):
* UserInterface/Models/DOMNode.js:
* UserInterface/Protocol/Connection.js:
(InspectorBackend.Connection):
(InspectorBackend.MainConnection):
(InspectorBackend.WorkerConnection):
* UserInterface/Protocol/MainTarget.js:
(WebInspector.MainTarget):
* UserInterface/Protocol/WorkerTarget.js:
(WebInspector.WorkerTarget):
* UserInterface/Test/Test.js:
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
* UserInterface/Views/ConsoleSession.js:
(WebInspector.ConsoleSession):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility.accessibilityPropertiesCallback):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility):
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
* UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
(WebInspector.ScopeChainDetailsSidebarPanel):
* UserInterface/Views/ScriptContentView.js:
(WebInspector.ScriptContentView.prototype._toggleTypeAnnotations):
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype._createControlFlowScrollEventHandler):
* UserInterface/Views/TextResourceContentView.js:
(WebInspector.TextResourceContentView.prototype._toggleTypeAnnotations):
* UserInterface/Workers/Formatter/EsprimaFormatter.js:
(EsprimaFormatter.prototype._handleTokenAtNode):
Address pedantic warnings for consistent style.
2017-01-30 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: "bouncy highlight" element in TextEditor/DOMTreeOutline should update or dismiss when user scrolls
https://bugs.webkit.org/show_bug.cgi?id=167146
Reviewed by Timothy Hatcher.
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype._revealSearchResult.scrollHandler):
(WebInspector.TextEditor.prototype._revealSearchResult.animationEnded):
(WebInspector.TextEditor.prototype._revealSearchResult):
2017-01-30 Joseph Pecoraro <pecoraro@apple.com>
Implement PerformanceObserver
https://bugs.webkit.org/show_bug.cgi?id=167546
<rdar://problem/30247959>
Reviewed by Ryosuke Niwa.
* UserInterface/Models/NativeFunctionParameters.js:
Improve API view display of built-in performance methods.
2017-01-30 Matt Baker <mattbaker@apple.com>
Web Inspector: Need some limit on Async Call Stacks for async loops (rAF loops)
https://bugs.webkit.org/show_bug.cgi?id=165633
<rdar://problem/29738502>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
Text for "Truncated" marker tree element.
* UserInterface/Models/StackTrace.js:
(WebInspector.StackTrace):
(WebInspector.StackTrace.fromPayload):
(WebInspector.StackTrace.prototype.get truncated):
Plumbing for new Console.StackTrace property `truncated`.
* UserInterface/Views/ThreadTreeElement.css:
(.tree-outline > .item.thread + ol > .item.truncated-call-frames):
(.tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
Styles for "Truncated" marker tree element.
* UserInterface/Views/ThreadTreeElement.js:
(WebInspector.ThreadTreeElement.prototype.refresh):
Append "Truncated" marker tree element if necessary.
* Versions/Inspector-iOS-10.3.json:
2017-01-30 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r211345.
The LayoutTest for this change is failing an assertion.
Reverted changeset:
"Web Inspector: Need some limit on Async Call Stacks for async
loops (rAF loops)"
https://bugs.webkit.org/show_bug.cgi?id=165633
http://trac.webkit.org/changeset/211345
2017-01-28 Matt Baker <mattbaker@apple.com>
Web Inspector: Need some limit on Async Call Stacks for async loops (rAF loops)
https://bugs.webkit.org/show_bug.cgi?id=165633
<rdar://problem/29738502>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
Text for "Truncated" marker tree element.
* UserInterface/Models/StackTrace.js:
(WebInspector.StackTrace):
(WebInspector.StackTrace.fromPayload):
(WebInspector.StackTrace.prototype.get truncated):
Plumbing for new Console.StackTrace property `truncated`.
* UserInterface/Views/ThreadTreeElement.css:
(.tree-outline > .item.thread + ol > .item.truncated-call-frames):
(.tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
Styles for "Truncated" marker tree element.
* UserInterface/Views/ThreadTreeElement.js:
(WebInspector.ThreadTreeElement.prototype.refresh):
Append "Truncated" marker tree element if necessary.
* Versions/Inspector-iOS-10.3.json:
2017-01-27 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: gradient editor should provide horizontal slider for 'angle' value where applicable
https://bugs.webkit.org/show_bug.cgi?id=166937
Reviewed by Joseph Pecoraro.
* UserInterface/Views/GradientEditor.css:
(.gradient-editor):
(.gradient-editor > .gradient-angle):
(.gradient-editor > .gradient-angle > input[type="range"]):
(.gradient-editor > .gradient-angle > input[type="number"]):
(.gradient-editor > .gradient-angle > input::-webkit-inner-spin-button):
(.gradient-editor > .gradient-angle > input): Deleted.
* UserInterface/Views/GradientEditor.js:
(WebInspector.GradientEditor):
(WebInspector.GradientEditor.prototype.set gradient):
(WebInspector.GradientEditor.prototype.gradientSliderStopWasSelected):
(WebInspector.GradientEditor.prototype._gradientTypeChanged):
(WebInspector.GradientEditor.prototype._angleChanged):
(WebInspector.GradientEditor.prototype.dragToAdjustControllerWasAdjustedByAmount): Deleted.
(WebInspector.GradientEditor.prototype._angleInputValueDidChange): Deleted.
Remove the DragToAdjustController and replace with an <input type="range">.
2017-01-23 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Provide a way to trigger a Garbage Collection
https://bugs.webkit.org/show_bug.cgi?id=167345
<rdar://problem/30102853>
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
New "Garbage collect" tooltip.
* Versions/Inspector-iOS-10.3.json:
* UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
Update 10.3 so it generates its list of supported domains for workers.
Note that the Heap domain is not be available in this backend but it is now.
* UserInterface/Protocol/Connection.js:
(InspectorBackend.WorkerConnection):
* UserInterface/Protocol/HeapObserver.js:
(WebInspector.HeapObserver.prototype.garbageCollected):
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass):
(InspectorBackendClass.prototype.get workerSupportedDomains):
(InspectorBackendClass.prototype.workerSupportedDomain):
* UserInterface/Images/NavigationItemClear.svg: Added.
* UserInterface/Images/NavigationItemGarbageCollect.svg: Added.
New image for Garbage Collection. Better image for clearing.
* UserInterface/Images/gtk/NavigationItemClear.svg: Added.
Copy the Trash icon for Clear for gtk.
* UserInterface/Protocol/Target.js:
(WebInspector.Target.prototype.get HeapAgent):
* UserInterface/Protocol/WorkerTarget.js:
(WebInspector.WorkerTarget):
Include Heap agent for Workers.
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView):
(WebInspector.LogContentView.prototype.get navigationItems):
(WebInspector.LogContentView.prototype._garbageCollect):
Add garbage collect button which triggers gc on all capable targets.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView):
* UserInterface/Views/TimelineRecordingContentView.js:
(WebInspector.TimelineRecordingContentView):
Update the Clear icon to an improved icon.
* UserInterface/Controllers/HeapManager.js:
(WebInspector.HeapManager.prototype.garbageCollected):
Timelines only shows Main Target events, do not show GC events for Workers.
2017-01-23 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: long press on New Tab Tab Item should show context menu with recently closed tabs that are still closed
https://bugs.webkit.org/show_bug.cgi?id=166901
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/TabBar.js:
(WebInspector.TabBar.Event):
(WebInspector.TabBar.prototype._handleNewTabContextMenu):
Add listener dispatch for contextmenu event on New Tab tab item.
(WebInspector.TabBar.prototype.get newTabTabBarItem): Deleted.
Unused.
* UserInterface/Views/TabBrowser.js:
(WebInspector.TabBrowser):
(WebInspector.TabBrowser.prototype._tabBarItemAdded):
(WebInspector.TabBrowser.prototype._tabBarItemRemoved):
(WebInspector.TabBrowser.prototype._handleNewTabContextMenu): Added.
Create an array that keeps track of tabs as they are closed, and populate the contextmenu
of the New Tab tab item with entries for each of these tabs.
2017-01-23 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: tree elements with depth > 1 should have context menu "expand all"/"collapse all" commands
https://bugs.webkit.org/show_bug.cgi?id=135590
Reviewed by Timothy Hatcher.
Rework the context menu event handlers for all TreeOutline and TreeElement instances such
that the TreeOutline handles the event listener and creates the context menu object and the
TreeElement populates the list with items. This is necessary due to the way in which
children are laid out, as there is padding on either side of the element that would not
trigger a context menu event.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/BreakpointTreeElement.js:
(WebInspector.BreakpointTreeElement.prototype.ondetach):
(WebInspector.BreakpointTreeElement.prototype.populateContextMenu):
(WebInspector.BreakpointTreeElement.prototype.oncontextmenu): Deleted.
* UserInterface/Views/ContextMenuUtilities.js:
(WebInspector.appendContextMenuItemsForSourceCode):
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
* UserInterface/Views/DOMTreeOutline.js:
(WebInspector.DOMTreeOutline):
(WebInspector.DOMTreeOutline.prototype.populateContextMenu):
(WebInspector.DOMTreeOutline.prototype._onmousedown):
(WebInspector.DOMTreeOutline.prototype._onmousemove):
(WebInspector.DOMTreeOutline.prototype._ondragstart):
(WebInspector.DOMTreeOutline.prototype._ondragover):
(WebInspector.DOMTreeOutline.prototype._ondrop):
(WebInspector.DOMTreeOutline.prototype._treeElementFromEvent): Deleted.
(WebInspector.DOMTreeOutline.prototype._contextMenuEventFired): Deleted.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype._breakpointTreeOutlineContextMenuTreeElement):
* UserInterface/Views/FrameTreeElement.js:
(WebInspector.FrameTreeElement.prototype.onattach):
* UserInterface/Views/GeneralTreeElement.js:
(WebInspector.GeneralTreeElement.prototype.onattach):
(WebInspector.GeneralTreeElement.prototype.ondetach): Deleted.
* UserInterface/Views/ObjectTreeBaseTreeElement.js:
(WebInspector.ObjectTreeBaseTreeElement.prototype.populateContextMenu):
(WebInspector.ObjectTreeBaseTreeElement.prototype._logSymbolProperty):
(WebInspector.ObjectTreeBaseTreeElement.prototype._logValue):
(WebInspector.ObjectTreeBaseTreeElement.prototype.oncontextmenu): Deleted.
(WebInspector.ObjectTreeBaseTreeElement.prototype._contextMenuHandler): Deleted.
* UserInterface/Views/ResourceTreeElement.js:
(WebInspector.ResourceTreeElement.prototype.populateContextMenu):
(WebInspector.ResourceTreeElement.prototype.onattach): Deleted.
(WebInspector.ResourceTreeElement.prototype._handleContextMenuEvent): Deleted.
* UserInterface/Views/ThreadTreeElement.js:
(WebInspector.ThreadTreeElement.prototype.populateContextMenu):
(WebInspector.ThreadTreeElement.prototype.oncontextmenu): Deleted.
* UserInterface/Views/TreeElement.js:
(WebInspector.TreeElement.prototype.populateContextMenu):
(WebInspector.TreeElement):
* UserInterface/Views/TreeOutline.js:
(WebInspector.TreeOutline):
(WebInspector.TreeOutline.prototype.treeElementFromEvent):
(WebInspector.TreeOutline.prototype.populateContextMenu):
(WebInspector.TreeOutline._generateStyleRulesIfNeeded):
* UserInterface/Views/VisualStyleSelectorTreeItem.js:
(WebInspector.VisualStyleSelectorTreeItem.prototype.onattach):
(WebInspector.VisualStyleSelectorTreeItem.prototype.populateContextMenu):
(WebInspector.VisualStyleSelectorTreeItem.prototype._highlightNodesWithSelector):
(WebInspector.VisualStyleSelectorTreeItem.prototype._hideDOMNodeHighlight):
(WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent): Deleted.
* UserInterface/Views/WorkerTreeElement.js:
(WebInspector.WorkerTreeElement.prototype.populateContextMenu):
(WebInspector.WorkerTreeElement.prototype.onattach):
(WebInspector.WorkerTreeElement.prototype._handleContextMenuEvent): Deleted.
* UserInterface/Views/DataGrid.js:
(WebInspector.DataGrid.prototype._contextMenuInDataTable):
Add "Expand All"/"Collapse All" context menu items.
2017-01-23 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: color picker should feature an editable CSS value
https://bugs.webkit.org/show_bug.cgi?id=124356
Reviewed by Timothy Hatcher.
* UserInterface/Views/ColorPicker.css:
(.color-picker):
(.color-picker.hide-inputs):
(.color-picker > .color-inputs):
(.color-picker > .color-inputs > div):
(.color-picker > .color-inputs > div[hidden]):
(.color-picker > .color-inputs input):
* UserInterface/Views/ColorPicker.js:
(WebInspector.ColorPicker.createColorInput):
(WebInspector.ColorPicker):
(WebInspector.ColorPicker.prototype.set color):
(WebInspector.ColorPicker.prototype.set enableColorComponentInputs):
(WebInspector.ColorPicker.prototype._updateColor):
(WebInspector.ColorPicker.prototype._handleFormatChange):
(WebInspector.ColorPicker.prototype._showColorComponentInputs.updateColorInput):
(WebInspector.ColorPicker.prototype._showColorComponentInputs):
(WebInspector.ColorPicker.prototype._handleColorInputInput):
Add an input element (with a label for the component name and its units) for each component
as part of the current color format (e.g. R, G, B, A). If any of these inputs are changed
then the color is also changed and the "ColorChanged" event is fired.
* UserInterface/Controllers/CodeMirrorColorEditingController.js:
(WebInspector.CodeMirrorColorEditingController.prototype.popoverWillPresent):
* UserInterface/Views/InlineSwatch.js:
(WebInspector.InlineSwatch.prototype._swatchElementClicked):
Add FormatChanged event that fires whenever a new color is set with a different format or
the color value is set for the first time (there is no old format to compare to). This is
needed because if the format becomes RGB, RGBA, HSL, or HSLA from something not in that list
then the size of the containing popover needs to change since the newly added color inputs
will be displayed.
* UserInterface/Views/GradientEditor.js:
(WebInspector.GradientEditor):
Prevent the color inputs from displaying at all, since there aren't individual swatches for
each color in a gradient.
2017-01-20 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Search Tab should display search results immediately when closing and reopening Inspector
https://bugs.webkit.org/show_bug.cgi?id=167073
Reviewed by Timothy Hatcher.
* UserInterface/Views/SearchSidebarPanel.js:
(WebInspector.SearchSidebarPanel.prototype.focusSearchField):
Add parameter that will trigger a search with the current input value when true.
* UserInterface/Views/SearchTabContentView.js:
(WebInspector.SearchTabContentView):
(WebInspector.SearchTabContentView.prototype.focusSearchField):
(WebInspector.SearchTabContentView.prototype.initialLayout):
2017-01-19 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Network Tab's "Clear Network Items" button should have keyboard shortcuts
https://bugs.webkit.org/show_bug.cgi?id=166943
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
(WebInspector._clear):
Move clear keyboard shortcut to main object and call _handleClearShortcut on the visible
content view if able.
* UserInterface/Controllers/JavaScriptLogViewController.js:
(WebInspector.JavaScriptLogViewController):
(WebInspector.JavaScriptLogViewController.prototype.requestClearMessages):
(WebInspector.JavaScriptLogViewController.prototype._handleClearShortcut): Deleted.
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView):
(WebInspector.LogContentView.prototype.handleClearShortcut):
Move logic for requesting to clear messages from the LogManager to a better named function.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView):
(WebInspector.NetworkGridContentView.prototype.handleClearShortcut):
2017-01-19 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Dashboard's log/error/warning help tag says "click to show the Console" even when clicking does nothing
https://bugs.webkit.org/show_bug.cgi?id=167102
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WebInspector.showConsoleTab):
Don't revert to the All scopes if the requested scope is already selected.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/DefaultDashboardView.js:
(WebInspector.DefaultDashboardView):
(WebInspector.DefaultDashboardView.prototype._appendElementForNamedItem):
(WebInspector.DefaultDashboardView.prototype._setItemEnabled):
Only apply a title to the element when it is enabled.
2017-01-18 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: split console should be allowed for Network and Timeline tabs when Inspector is not docked
https://bugs.webkit.org/show_bug.cgi?id=167075
Reviewed by Timothy Hatcher.
* UserInterface/Base/Main.js:
(WebInspector.dockedConfigurationSupportsSplitContentBrowser):
Helper function to determine if the current docked state supports having the content view
and split console at the same time. Currently set to be true if not docked bottom.
* UserInterface/Views/ClusterContentView.js:
(WebInspector.ClusterContentView.prototype.get supportsSplitContentBrowser):
* UserInterface/Views/ContentView.js:
(WebInspector.ContentView.prototype.get supportsSplitContentBrowser):
* UserInterface/Views/NetworkTabContentView.js:
(WebInspector.NetworkTabContentView.prototype.get supportsSplitContentBrowser):
* UserInterface/Views/TimelineTabContentView.js:
(WebInspector.TimelineTabContentView.prototype.get supportsSplitContentBrowser): Deleted.
Update supportsSplitContentBrowser functions to only be true/false based on the return value
of WebInspector.dockedConfigurationSupportsSplitContentBrowser.
2017-01-18 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: console.table only works for the first 5 properties
https://bugs.webkit.org/show_bug.cgi?id=167175
Reviewed by Timothy Hatcher.
* UserInterface/Views/ConsoleMessageView.js:
(WebInspector.ConsoleMessageView.prototype._formatParameterAsTable):
Allow a max of 15 columns instead of 10.
2017-01-16 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: add "Persist Logs on Navigation" to settings screen
https://bugs.webkit.org/show_bug.cgi?id=166992
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Controllers/LogManager.js:
(WebInspector.LogManager):
(WebInspector.LogManager.prototype._delayedMessagesCleared):
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView.prototype._sessionStarted):
(WebInspector.LogContentView.prototype._handleContextMenuEvent):
(WebInspector.LogContentView.prototype._toggleClearLogOnNavigateSetting):
Move setting and UI toggle for "Keep Log on Navigation" to the global settings dictionary
and content view.
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype.initialLayout):
(WebInspector.SettingsTabContentView):
Add checkbox for new setting and spacer between text settings and log settings.
2017-01-16 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: add UI Zoom level to Settings screen
https://bugs.webkit.org/show_bug.cgi?id=166991
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WebInspector.loaded):
(WebInspector._dockedResizerMouseDown):
(WebInspector._increaseZoom):
(WebInspector._decreaseZoom):
(WebInspector._resetZoom):
(WebInspector.getZoomFactor): Renamed from _zoomFactor.
(WebInspector.setZoomFactor): Renamed from _setZoomFactor.
* UserInterface/Base/Setting.js:
(WebInspector.settings):
Moved zoomFactor setting to global dictionary.
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype.initialLayout):
Add UI input for changing zoomFactor.
2017-01-14 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Cmd-, should open Settings tab
https://bugs.webkit.org/show_bug.cgi?id=167028
Reviewed by Timothy Hatcher.
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
(WebInspector._showSettingsTab): Added.
2017-01-13 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Settings tab is restored when reopening inspector
https://bugs.webkit.org/show_bug.cgi?id=167025
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
(WebInspector._tabBrowserSelectedTabContentViewDidChange):
Only save the selectedTabIndex if the current tab should be saved and reloaded upon opening
the WebInspector window.
2017-01-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Resources disappear from the network tab when iframe gets removed from DOM
https://bugs.webkit.org/show_bug.cgi?id=166776
<rdar://problem/29909640>
Reviewed by Matt Baker.
* UserInterface/Views/NetworkSidebarPanel.js:
(WebInspector.NetworkSidebarPanel):
Don't remove resource tree elements from Network tab when iframe gets detached from the DOM.
2017-01-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: the 'lock' icon for non-editable rules in the Style Rules sidebar lacks a tooltip
https://bugs.webkit.org/show_bug.cgi?id=166909
<rdar://problem/29959406>
Reviewed by Matt Baker.
Convert the lock icon from a pseudo-element to an 'img' element and add a title attribute.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/CSSStyleDeclarationSection.css:
(.style-declaration-section.locked > .header > .locked-icon):
(.style-declaration-section.locked > .header::before): Deleted.
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WebInspector.CSSStyleDeclarationSection):
2017-01-12 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r209711): Web Inspector: in Elements Tab, selecting a deeply nested DOM element causes navigation bar buttons to be pushed off the leading edge
https://bugs.webkit.org/show_bug.cgi?id=166898
<rdar://problem/29951737>
Reviewed by Timothy Hatcher.
* UserInterface/Views/HierarchicalPathComponent.js:
(WebInspector.HierarchicalPathComponent.prototype.set selectorArrows):
The following operations do NOT produce the same result:
classList.toogle(aString, undefined)
classList.toogle(aString, false)
The former is an equivalent of classList.toogle(aString), e.g. it set a class if it wasn't set before.
2017-01-12 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: cubic-bezier editor behaves poorly for invalid inputs in component fields
https://bugs.webkit.org/show_bug.cgi?id=166928
Reviewed by Brian Burg.
* UserInterface/Views/BezierEditor.css:
(.bezier-editor):
(.bezier-editor > .number-input-container > input):
* UserInterface/Views/BezierEditor.js:
(WebInspector.BezierEditor.createBezierInput):
(WebInspector.BezierEditor):
Add type, step, min, and max to the bezier component inputs to better control user input.
2017-01-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add another Protocol Version
https://bugs.webkit.org/show_bug.cgi?id=166953
<rdar://problem/29980631>
Reviewed by Timothy Hatcher.
* UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js: Added.
* Versions/Inspector-iOS-10.3.json: Added.
2017-01-11 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: spring function editor has unusual layout, should have left-aligned labels and slider tracks
https://bugs.webkit.org/show_bug.cgi?id=166933
Reviewed by Brian Burg.
* UserInterface/Views/Main.css:
(input[type=range]::-webkit-slider-thumb):
(input[type=range]::-webkit-slider-runnable-track):
(input[type=range]::-webkit-slider-runnable-track::before): Deleted.
Fix slider styles.
* UserInterface/Views/SpringEditor.css:
(.spring-editor):
(.spring-editor > .spring-preview):
(.spring-editor > .spring-timing):
(.spring-editor > .number-input-container > .number-input-row > .number-input-row-title):
(.spring-editor > .number-input-container > .number-input-row > input):
(.spring-editor > .number-input-container > .number-input-row > input::-webkit-inner-spin-button):
(.spring-editor > .number-input-container > .number-input-row > input[type="range"]):
Decrease spacing and left-align text.
* UserInterface/Views/SpringEditor.js:
(WebInspector.SpringEditor.prototype._handleNumberInputKeydown):
(WebInspector.SpringEditor.prototype._changeSpringForInput):
Only update editor values when the new value of any input has changed. This allows users to
enter decimal values ("." was being stripped by `parseFloat`).
2017-01-11 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: color, gradient, cubic-bezier, spring editors should be dismissable using ESC
https://bugs.webkit.org/show_bug.cgi?id=166934
Reviewed by Brian Burg.
* UserInterface/Views/Popover.js:
(WebInspector.Popover):
(WebInspector.Popover.prototype.dismiss):
(WebInspector.Popover.prototype.handleEvent):
(WebInspector.Popover.prototype._addListenersIfNeeded):
Adds a keydown listener while visible for the Escape key that dismisses the popover.
* UserInterface/Views/QuickConsole.js:
(WebInspector.QuickConsole.prototype.set keyboardShortcutDisabled):
Expose the ability to disable the global keyboard shortcut. This allows the Popover to have
its own Escape keyboard shortcut to take precedence.
2017-01-11 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: fix UIString for Print Styles button
https://bugs.webkit.org/show_bug.cgi?id=166892
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/DOMTreeContentView.js:
(WebInspector.DOMTreeContentView):
Changed UIString to better match documentation.
2017-01-09 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r210260.
https://bugs.webkit.org/show_bug.cgi?id=166860
new colorpicker UI doesn't seem to work in trunk,
investigating offline (Requested by brrian on #webkit).
Reverted changeset:
"Web Inspector: color picker should feature an editable CSS
value"
https://bugs.webkit.org/show_bug.cgi?id=124356
http://trac.webkit.org/changeset/210260
2017-01-06 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r210110.
https://bugs.webkit.org/show_bug.cgi?id=166783
Introduced a regression commenting out individual properties
(Requested by JoePeck on #webkit).
Reverted changeset:
"Web Inspector: Styles sidebar: Uncommenting CSS rules of
pseudo-elements doesn't work"
https://bugs.webkit.org/show_bug.cgi?id=165831
http://trac.webkit.org/changeset/210110
2017-01-05 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused delegate from VisualStyleSelectorSection
https://bugs.webkit.org/show_bug.cgi?id=166744
Reviewed by Alex Christensen.
* UserInterface/Views/VisualStyleDetailsPanel.js:
(WebInspector.VisualStyleDetailsPanel.prototype.initialLayout):
* UserInterface/Views/VisualStyleSelectorSection.js:
(WebInspector.VisualStyleSelectorSection):
2017-01-04 Brian Burg <bburg@apple.com>
Web Inspector: Test.html should support globals reportInternalError, reportUnhandledRejection, reportUncaughtException
https://bugs.webkit.org/show_bug.cgi?id=161358
<rdar://problem/28066446>
Reviewed by Joseph Pecoraro.
We have a hodgepodge of redundant code that reports uncaught exceptions in the inspector page.
There is better handling of uncaught exceptions in the inspected page, such as including stack traces.
This patch consolidates a lot of this code and makes it possible to report
unhandled promise rejections, top-level uncaught exceptions, and exceptions
caught in a try-catch block. The formatting and sanitization code for all of
these things is shared and consistent. Finally, some tests have been added to
catch regressions in unhandled rejection/uncaught exception reporting.
* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness): Explicitly set initial flag state here so it's easy to find all flags.
(FrontendTestHarness.prototype.redirectConsoleToTestOutput):
Extract this code to sanitize stack frames and put it in TestHarness. It is used
by other methods that need to print stack frames.
(FrontendTestHarness.prototype.reportUnhandledRejection):
(FrontendTestHarness.prototype.reportUncaughtException):
Added. Sanitize stack trace data so it is deterministic. Log the message to the
original window.console but don't exit early. Sometimes the test page is not
fully loaded if we throw an exception quite early in the test() method, and there's
no harm in not early returning. If we do early return in this case, then a test that
uses reportUncaughtException on purpose may not complete because the call to completeTest()
would be skipped by returning early.
(FrontendTestHarness.prototype.reportUncaughtExceptionFromEvent):
Renamed from reportUncaughtException since the signature of that method suggests
it should have a single exception argument rather than lots of data arguments.
* UserInterface/Test/Test.js: Add globals.
* UserInterface/Test/TestHarness.js:
(TestHarness): Document class flags.
(TestHarness.sanitizeURL):
(TestHarness.sanitizeStackFrame):
(TestHarness.prototype.sanitizeStack):
Extract this code from other parts of the test harness. Make sanitizeStack
an instance method so that there is only one place that needs to check the
'suppressStackTraces' flag.
* UserInterface/Test/TestSuite.js:
(TestSuite.prototype.logThrownObject):
(TestSuite):
(AsyncTestSuite.prototype.runTestCases):
(AsyncTestSuite):
(SyncTestSuite.prototype.runTestCases):
(SyncTestSuite):
(TestSuite.messageFromThrownObject): Deleted.
Inline some helpers with only one use-site and consolidate redundant code
for adding an exception and message to the test results.
2017-01-04 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: application cache details not shown in Storage Tab
https://bugs.webkit.org/show_bug.cgi?id=166699
<rdar://problem/29871716>
Reviewed by Brian Burg.
Fix a ternary operator precedence. The following expression throws an exception:
true || false ? i.dont.exist : false
* UserInterface/Views/ApplicationCacheFrameTreeElement.js:
(WebInspector.ApplicationCacheFrameTreeElement.prototype.updateTitles):
2017-01-03 Brian Burg <bburg@apple.com>
Web Inspector: WrappedPromise constructor should behave like the Promise constructor
https://bugs.webkit.org/show_bug.cgi?id=166523
Reviewed by Joseph Pecoraro.
* UserInterface/Models/WrappedPromise.js:
(WebInspector.WrappedPromise):
- Return the result of 'work' from the inner promise
so WrappedPromise.promise can be chained.
- Provide shim resolve, reject callbacks as parameters.
(WebInspector.WrappedPromise.prototype.get settled): Added.
Tells whether we already resolved or rejected the promise.
(WebInspector.WrappedPromise.prototype.resolve):
(WebInspector.WrappedPromise.prototype.reject):
Throw an error if already settled and update the flag.
2017-01-03 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: color picker should feature an editable CSS value
https://bugs.webkit.org/show_bug.cgi?id=124356
Reviewed by Brian Burg.
* UserInterface/Views/ColorPicker.css:
(.color-picker):
(.color-picker > .color-inputs):
(.color-picker > .color-inputs > div):
(.color-picker > .color-inputs > div[hidden]):
(.color-picker > .color-inputs input):
* UserInterface/Views/ColorPicker.js:
(WebInspector.ColorPicker.createColorInput):
(WebInspector.ColorPicker):
(WebInspector.ColorPicker.prototype.set color):
(WebInspector.ColorPicker.prototype.sliderValueDidChange):
(WebInspector.ColorPicker.prototype._updateColor):
(WebInspector.ColorPicker.prototype._showColorComponentInputs.updateColorInput):
(WebInspector.ColorPicker.prototype._showColorComponentInputs):
(WebInspector.ColorPicker.prototype._handleColorInputInput):
Add an input element (with a label for the component name and its units) for each component
as part of the current color format (e.g. R, G, B, A). If any of these inputs are changed
then the color is also changed and the "ColorChanged" event is fired.
2017-01-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: "Invalid Characters" setting does the opposite of the checkbox
https://bugs.webkit.org/show_bug.cgi?id=166664
Reviewed by Brian Burg.
* UserInterface/Views/CodeMirrorOverrides.css:
(.CodeMirror .cm-invalidchar):
(.show-invalid-characters .CodeMirror .cm-invalidchar):
Hide invalid characters by default, and show them with the show class.
2017-01-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Fix Content Flow Container Regions Computed Style section
https://bugs.webkit.org/show_bug.cgi?id=166294
Reviewed by Brian Burg.
* UserInterface/Controllers/DOMTreeManager.js:
(WebInspector.DOMTreeManager.prototype._coerceRemoteArrayOfDOMNodes):
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.domNodeResolved):
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.remoteObjectPropertiesAvailable):
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo):
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.backendFunction.getComputedProperty): Deleted.
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.backendFunction.getContentFlowName): Deleted.
Update this to use Array.from() to convert the NodeList to an Array, and then
use the already available RemoteObject's size property instead of getting the
"length" property from the Array.
2017-01-03 Brian Burg <bburg@apple.com>
Web Inspector: opening Test.html in a normal browser window doesn't log errors to console
https://bugs.webkit.org/show_bug.cgi?id=166570
Reviewed by Joseph Pecoraro.
Early syntax errors in the test harness should be logged to the page console since they are easier to
debug in a normal browser using Web Inspector. But, the checks to revert to normal console don't work.
* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness.prototype.reportUncaughtException):
Add a helper to encapsulate the meaning of checking this._shouldResendResults.
This flag is always true until the test page injects its initializers into the
inspector page, which will never happen when we view Test.html outside of the test harness.
2016-12-22 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r210069.
https://bugs.webkit.org/show_bug.cgi?id=166439
This patch makes all properties in Computed Styles strike-
through when switching from the Rules panel. (Requested by NVI
on #webkit).
Reverted changeset:
"Web Inspector: Uncommenting CSS properties doesn't work for
inline styles"
https://bugs.webkit.org/show_bug.cgi?id=166297
http://trac.webkit.org/changeset/210069
2016-12-22 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles sidebar: Uncommenting CSS rules of pseudo-elements doesn't work
https://bugs.webkit.org/show_bug.cgi?id=165831
<rdar://problem/29652688>
Reviewed by Matt Baker.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype.uncommentAllProperties):
Call _resetContent() when toggling all properties to ensure properties have text markers.
(WebInspector.CSSStyleDeclarationTextEditor.prototype._propertyCommentCheckboxChanged):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._uncommentProperty): Added.
This method is the opposite of _commentProperty. Introduce it to minimize code duplication.
2016-12-21 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Uncommenting CSS properties doesn't work for inline styles
https://bugs.webkit.org/show_bug.cgi?id=166297
Reviewed by Brian Burg.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
Update checkboxes for inline styles, too.
2016-12-20 Matt Baker <mattbaker@apple.com>
Web Inspector: Window resize causes TimelineOverview graph elements to be repositioned
https://bugs.webkit.org/show_bug.cgi?id=160207
<rdar://problem/27553228>
Reviewed by Brian Burg.
TimelineRuler does not always update its divider positions when the start
time changes while the end time remains the same. The check that determines
whether the first or last divider positions have changed before doing a
layout uses the ruler end time instead of calculating the last divider's
position, and would falsely determine no change was needed.
* UserInterface/Views/TimelineRuler.js:
(WebInspector.TimelineRuler.prototype.set startTime):
(WebInspector.TimelineRuler.prototype.set secondsPerPixel):
Clear cached divider data on zoom or scroll, forcing dividers to be recalculated.
(WebInspector.TimelineRuler.prototype.layout):
Calculate accurate divider count and last divider time.
2016-12-20 Wenson Hsieh <wenson_hsieh@apple.com>
Update keyword completions in the inspector for the new scroll snapping CSS properties
https://bugs.webkit.org/show_bug.cgi?id=166235
Reviewed by Joseph Pecoraro.
The CSS keyword completions for the scroll snapping properties need to be updated for the latest version of the spec.
* UserInterface/Models/CSSKeywordCompletions.js:
2016-12-20 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Console could be made useful for very simple await expressions
https://bugs.webkit.org/show_bug.cgi?id=165681
<rdar://problem/29755339>
Reviewed by Brian Burg.
Normally await expressions are only allowed inside of async functions.
They make dealing with async operations easy, but can't be used directly
in Web Inspector's console without making your own async function wrapper.
This change allows simple await expressions to be run in the console.
The supported syntaxes are (simple expression with optional assignment):
await <expr>
x = await <expr>
let x = await <expr>
Web Inspector's console will automatically wrap this in an async
function and report the resulting value or exception. For instance
in the last example above:
let x;
(async function() {
try {
x = await <expr>;
console.info("%o", x);
} catch (e) {
console.error(e);
}
})();
undefined
This way users can get the convenience of await in the Console.
This also gives users a nice way of extracting a value out of
a Promise without writing their own handlers.
* UserInterface/Controllers/RuntimeManager.js:
(WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
(WebInspector.RuntimeManager.prototype._tryApplyAwaitConvenience):
Wrap simple await expressions into a function that will log the result.
2016-12-20 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Update CodeMirror to support async/await keyword and other ES2017 features
https://bugs.webkit.org/show_bug.cgi?id=165677
Rubber-stamped by Brian Burg.
Update CodeMirror from version 5.5.1 to 5.21.1. Highlights include:
- Syntax highlighting for ES2017 features (async/await)
- Syntax highlighting improvements for some ES6 features (new.target)
- Syntax highlighting for CSS4 #rrggbbaa and #rgba colors
As well as a number of smaller bug fixes.
Had to add a few semicolons to codemirror.js so that our minifier
didn't choke in a few places due to ASI behavior.
* Scripts/update-codemirror-resources.rb:
* UserInterface/External/CodeMirror/LICENSE:
* UserInterface/External/CodeMirror/clojure.js:
* UserInterface/External/CodeMirror/closebrackets.js:
* UserInterface/External/CodeMirror/codemirror.css:
* UserInterface/External/CodeMirror/codemirror.js:
* UserInterface/External/CodeMirror/coffeescript.js:
* UserInterface/External/CodeMirror/comment.js:
* UserInterface/External/CodeMirror/css.js:
* UserInterface/External/CodeMirror/htmlmixed.js:
* UserInterface/External/CodeMirror/javascript.js:
* UserInterface/External/CodeMirror/livescript.js:
* UserInterface/External/CodeMirror/matchbrackets.js:
* UserInterface/External/CodeMirror/overlay.js:
* UserInterface/External/CodeMirror/placeholder.js:
* UserInterface/External/CodeMirror/runmode.js:
* UserInterface/External/CodeMirror/sql.js:
* UserInterface/External/CodeMirror/sublime.js:
* UserInterface/External/CodeMirror/xml.js:
2016-12-19 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Address some assertions and uncaught exceptions seen using Inspector
https://bugs.webkit.org/show_bug.cgi?id=166048
Reviewed by Matt Baker.
* UserInterface/Controllers/CodeMirrorEditingController.js:
(WebInspector.CodeMirrorEditingController.prototype.presentHoverMenu):
(WebInspector.CodeMirrorEditingController.prototype.dismissHoverMenu):
classList throws an exception when given an empty string. Avoid those cases.
* UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
(WebInspector.CodeMirrorTokenTrackingController.prototype._startTracking):
(WebInspector.CodeMirrorTokenTrackingController.prototype._stopTracking):
Seen this assert frequently for a while, existing code handles it gracefully.
* UserInterface/Workers/Formatter/EsprimaFormatter.js:
(EsprimaFormatter.prototype._handleTokenAtNode):
We correctly handle these tokens but they were not in the list of expected tokens.
2016-12-16 Joseph Pecoraro <pecoraro@apple.com>
JSContext Inspector: Avoid some possible exceptions inspecting a JSContext
https://bugs.webkit.org/show_bug.cgi?id=165986
<rdar://problem/29551379>
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
There will not be a main frame if we are debugging a JSContext.
In those cases do not change the title.
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
There may not be a parent folder in JavaScript inspection. In that case
ScriptTreeElements are added to the Top Level, not folders.
2016-12-16 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r209882): Opening find banner in editor causes UI to hang
https://bugs.webkit.org/show_bug.cgi?id=165967
Reviewed by Timothy Hatcher.
* UserInterface/Views/ContentBrowser.js:
(WebInspector.ContentBrowser.prototype._findBannerDidShow):
Showing the find banner should cause search results to be refreshed only
if it contains query text.
2016-12-16 Matt Baker <mattbaker@apple.com>
Web Inspector: Modernize find banner UI
https://bugs.webkit.org/show_bug.cgi?id=165939
Reviewed by Timothy Hatcher.
The find banner should have a modern appearance, matching Xcode.
* UserInterface/Views/FindBanner.css:
(.find-banner > input[type="search"]):
(.find-banner > button):
Use standard border colors.
(.find-banner > button:disabled > .glyph):
Disabled previous / next glyphs should be lighter.
(.find-banner > button:active:not(:disabled)):
Update depressed button style: flat colors, no text color change.
(.find-banner > button.segmented):
(.find-banner > button.segmented.left):
(.find-banner > button:not(:active).segmented.right:before):
(.find-banner > button.segmented.left:active + button.segmented.right,):
(.find-banner > button.segmented.left:active + button.segmented.right:before):
(.find-banner > button.segmented.right):
(.find-banner.console-find-banner > input[type="search"]):
(.find-banner.console-find-banner > :matches(input[type="search"], button)):
(.find-banner > button:disabled): Deleted.
(.find-banner > button.segmented:active): Deleted.
Overlapping button borders are no longer an issue.
* UserInterface/Views/FindBanner.js:
(WebInspector.FindBanner):
Insert previous / next buttons after the input field in the DOM.
(WebInspector.FindBanner.prototype.get delegate):
(WebInspector.FindBanner.prototype.set delegate):
(WebInspector.FindBanner.prototype.get inputField):
(WebInspector.FindBanner.prototype.get searchQuery):
(WebInspector.FindBanner.prototype.set searchQuery):
(WebInspector.FindBanner.prototype.get numberOfResults):
Inline simple getters and setters.
* UserInterface/Views/Variables.css:
(:root):
Add button colors.
2016-12-15 Matt Baker <mattbaker@apple.com>
Web Inspector: console search bar jumps, behaves poorly at narrow widths
https://bugs.webkit.org/show_bug.cgi?id=164047
<rdar://problem/29055582>
Reviewed by Timothy Hatcher.
At narrow widths the find banner behaves poorly in the split console
toolbar. It should work like the main content browser, appearing below
the toolbar when Command-F is pressed and either the split console or
quick console prompt has the focus.
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
Enable split content browser find banner.
* UserInterface/Views/ContentBrowser.js:
(WebInspector.ContentBrowser.prototype.showFindBanner):
Check for custom find banner support at runtime.
(WebInspector.ContentBrowser.prototype._findBannerDidShow):
(WebInspector.ContentBrowser.prototype._findBannerDidHide):
Refresh search results when banner is shown/hidden, instead of relying
on toggling the "showing-find-banner" class name for everything.
(WebInspector.ContentBrowser.prototype.handleFindEvent): Deleted.
Renamed `showFindBanner`.
* UserInterface/Views/ContentView.js:
(WebInspector.ContentView.prototype.get supportsCustomFindBanner):
(WebInspector.ContentView.prototype.showCustomFindBanner):
Custom find banner support (used by LogContentView).
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView):
(WebInspector.LogContentView.prototype.get supportsSearch):
(WebInspector.LogContentView.prototype.get numberOfSearchResults):
(WebInspector.LogContentView.prototype.get hasPerformedSearch):
Cleanup.
(WebInspector.LogContentView.prototype.get supportsCustomFindBanner):
Use toolbar item find banner when showing Console tab.
(WebInspector.LogContentView.prototype.findBannerRevealPreviousResult):
(WebInspector.LogContentView.prototype.findBannerRevealNextResult):
(WebInspector.LogContentView.prototype._isMessageVisible):
(WebInspector.LogContentView.prototype._visibleMessageElements):
(WebInspector.LogContentView.prototype._logCleared):
(WebInspector.LogContentView.prototype._filterMessageElements):
(WebInspector.LogContentView.prototype.findBannerPerformSearch):
(WebInspector.LogContentView.prototype.findBannerSearchCleared):
(WebInspector.LogContentView.prototype.performSearch):
Support both the standard and custom (toolbar item) find banners.
(WebInspector.LogContentView.prototype.searchCleared):
Refresh search results.
(WebInspector.LogContentView.prototype._highlightRanges):
Correct spelling: _selectedSearchMathIsValid -> _selectedSearchMatchIsValid.
(WebInspector.LogContentView.prototype.get searchInProgress): Deleted.
Override ContentView.prototype.hasPerformedSearch instead.
(WebInspector.LogContentView.prototype.handleFindEvent): Deleted.
Replaced by `showCustomFindBanner`.
(WebInspector.LogContentView.prototype.highlightPreviousSearchMatch): Deleted.
Absorbed by findBannerRevealPreviousResult.
(WebInspector.LogContentView.prototype.highlightNextSearchMatch): Deleted.
Absorbed by findBannerRevealNextResult.
(WebInspector.LogContentView.prototype._performSearch): Deleted.
Override ContentView.prototype.performSearch instead.
* UserInterface/Views/Main.css:
(#split-content-browser > .navigation-bar :matches(.find-banner, .find-banner + .divider)):
Hide the toolbar banner and divider.
2016-12-14 Ryosuke Niwa <rniwa@webkit.org>
Web Inspector: Jumping to the definition of a custom elements is broken
https://bugs.webkit.org/show_bug.cgi?id=165890
Reviewed by Joseph Pecoraro.
Fix the regression from https://trac.webkit.org/changeset/208304.
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._showCustomElementDefinition): Use the main target
since a custom element definition can never come from a worker.
2016-12-14 Matt Baker <mattbaker@apple.com>
Web Inspector: Zooming in on the Timeline should always zoom right where the cursor is
https://bugs.webkit.org/show_bug.cgi?id=151118
<rdar://problem/23487912>
Reviewed by Timothy Hatcher.
Use correct left edge for timeline overview graph elements.
* UserInterface/Views/TimelineOverview.js:
(WebInspector.TimelineOverview.prototype._handleWheelEvent):
(WebInspector.TimelineOverview._handleGestureStart):
(WebInspector.TimelineOverview.prototype._handleGestureChange):
2016-12-12 Nikita Vasilyev <nvasilyev@apple.com>
[GTK] Web Inspector: Add NavigationItemCodeCoverage.svg icon
https://bugs.webkit.org/show_bug.cgi?id=165698
Reviewed by Joseph Pecoraro.
* UserInterface/Images/gtk/NavigationItemCodeCoverage.svg: Added.
Match in style the existing NavigationItemTypes.svg icon.
2016-12-12 Matt Baker <mattbaker@apple.com>
Web Inspector: Cleanup HierarchicalPathComponent
https://bugs.webkit.org/show_bug.cgi?id=165745
Reviewed by Brian Burg.
Prefer toggle for style class names, remove single use CSS class name
constants, and back all properties by the model not the DOM.
* UserInterface/Views/HierarchicalPathComponent.js:
(WebInspector.HierarchicalPathComponent):
(WebInspector.HierarchicalPathComponent.prototype.get element):
(WebInspector.HierarchicalPathComponent.prototype.get representedObject):
(WebInspector.HierarchicalPathComponent.prototype.get minimumWidth):
(WebInspector.HierarchicalPathComponent.prototype.get forcedWidth):
(WebInspector.HierarchicalPathComponent.prototype.set forcedWidth):
(WebInspector.HierarchicalPathComponent.prototype.get hidden):
(WebInspector.HierarchicalPathComponent.prototype.set hidden):
(WebInspector.HierarchicalPathComponent.prototype.get collapsed):
(WebInspector.HierarchicalPathComponent.prototype.set collapsed):
(WebInspector.HierarchicalPathComponent.prototype.get selectorArrows):
(WebInspector.HierarchicalPathComponent.prototype.set selectorArrows):
(WebInspector.HierarchicalPathComponent.prototype.get previousSibling):
(WebInspector.HierarchicalPathComponent.prototype.set previousSibling):
(WebInspector.HierarchicalPathComponent.prototype.get nextSibling):
(WebInspector.HierarchicalPathComponent.prototype.set nextSibling):
(WebInspector.HierarchicalPathComponent.prototype._updateElementTitleAndText):
(WebInspector.HierarchicalPathComponent.prototype._updateSelectElement.createOption):
(WebInspector.HierarchicalPathComponent.prototype._updateSelectElement):
2016-12-12 Matt Baker <mattbaker@apple.com>
Web Inspector: Allow keyboard navigation in Heap Snapshot data grids
https://bugs.webkit.org/show_bug.cgi?id=165752
Reviewed by Brian Burg.
* UserInterface/Views/DOMTreeOutline.css:
(.tree-outline.dom:focus li.selected > span::after):
Use new color variable.
* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.get selectable): Deleted.
Should be selectable.
* UserInterface/Views/HeapSnapshotInstancesContentView.css:
(.heap-snapshot > .data-grid:focus tr.selected > td .sub-retained):
(.heap-snapshot > .data-grid:focus tr.selected .object-id,):
(.heap-snapshot > .data-grid:focus tr.selected .formatted-string,):
(.heap-snapshot > .data-grid:focus tr.selected td .location):
Selected row text should just be white, except for values that are usually
gray (object ID, object size, and sub-retained size values). These should
be styled like the "= $0" marker in the DOM tree outline.
(.heap-snapshot > .data-grid:matches(:focus, .force-focus) tr.selected td .location): Deleted.
Removed forced-focus reference. Only used by TreeOutlineDataGridSynchronizer.
* UserInterface/Views/Variables.css:
(:root):
Added --selected-secondary-text-color.
2016-12-12 Matt Baker <mattbaker@apple.com>
Web Inspector: Breakpoint Log action should support template literals
https://bugs.webkit.org/show_bug.cgi?id=165116
<rdar://problem/29464765>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
New string "${expr} = expression" for breakpoint popover.
* UserInterface/Controllers/BreakpointLogMessageLexer.js: Added.
To support template literal placeholders in message text, it is necessary
to distinguish plain text parts of the message from placeholders, since
plain text must be escaped.
(WebInspector.BreakpointLogMessageLexer):
(WebInspector.BreakpointLogMessageLexer.prototype.tokenize):
(WebInspector.BreakpointLogMessageLexer.prototype.reset):
(WebInspector.BreakpointLogMessageLexer.prototype._finishPlainText):
(WebInspector.BreakpointLogMessageLexer.prototype._finishExpression):
(WebInspector.BreakpointLogMessageLexer.prototype._appendToken):
(WebInspector.BreakpointLogMessageLexer.prototype._consume):
(WebInspector.BreakpointLogMessageLexer.prototype._peek):
(WebInspector.BreakpointLogMessageLexer.prototype._expression):
(WebInspector.BreakpointLogMessageLexer.prototype._plainText):
(WebInspector.BreakpointLogMessageLexer.prototype._possiblePlaceholder):
(WebInspector.BreakpointLogMessageLexer.prototype._regExpOrStringLiteral):
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype._debuggerBreakpointOptions):
Build breakpoint "options" object for DebuggerAgent. If a Log action
contains template literal placeholders it is changed to an Evaluate
action, which calls console.log with a template literal.
(WebInspector.DebuggerManager.prototype._setBreakpoint):
Use converted breakpoint options.
* UserInterface/Main.html:
* UserInterface/Test.html:
New file.
* UserInterface/Views/BreakpointActionView.css:
(.breakpoint-action-block-body > .description):
Styles for breakpoint Log action hint text.
* UserInterface/Views/BreakpointActionView.js:
(WebInspector.BreakpointActionView.prototype._updateBody):
Add Log action hint text element.
2016-12-11 Matt Baker <mattbaker@apple.com>
Web Inspector: ThreadTreeElement should have a "Resume" status button when paused
https://bugs.webkit.org/show_bug.cgi?id=165581
Reviewed by Joseph Pecoraro.
* UserInterface/Images/Resume.svg:
Fill/stroke should be unspecified so that both can be styled in CSS.
* UserInterface/Views/DebuggerDashboardView.css:
(.dashboard.debugger .navigation-bar .item.debugger-dashboard-pause.activated):
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-pause-resume):
(.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-pause-resume.activated):
Recreate original style which relied on 'fill="none"' being specified in the SVG.
* UserInterface/Views/ThreadTreeElement.css:
(.tree-outline > .item.thread .icon):
(.tree-outline > .item.thread .status-button.resume):
(.tree-outline > .item.thread .status-button.resume:active):
(.tree-outline:matches(:focus, .force-focus) > .item.thread.selected .status-button.resume):
(.tree-outline > .item.thread.selected .status-button.resume,):
(.details-section.call-stack .thread .icon): Deleted.
Status button styles. Colors match those of the goto-arrow button.
* UserInterface/Views/ThreadTreeElement.js:
(WebInspector.ThreadTreeElement.prototype.refresh):
Update status icon.
(WebInspector.ThreadTreeElement.prototype.oncontextmenu):
(WebInspector.ThreadTreeElement.prototype._updateStatus):
Add/remove status button based on paused state.
Stop propagation of "mousedown" events on the status button, to
prevent button press from selecting the tree element.
(WebInspector.ThreadTreeElement):
2016-12-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Move MainTarget and WorkerTarget to their own files
https://bugs.webkit.org/show_bug.cgi?id=165701
Reviewed by Brian Burg.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.scriptDidParse):
* UserInterface/Main.html:
* UserInterface/Protocol/MainTarget.js: Added.
(WebInspector.MainTarget):
(WebInspector.MainTarget.prototype.get displayName):
(WebInspector.MainTarget.prototype.get mainResource):
* UserInterface/Protocol/Target.js:
(WebInspector.Target):
(WebInspector.MainTarget): Deleted.
(WebInspector.MainTarget.prototype.get displayName): Deleted.
(WebInspector.MainTarget.prototype.get mainResource): Deleted.
(WebInspector.MainTarget.prototype.initialize): Deleted.
(WebInspector.WorkerTarget): Deleted.
(WebInspector.WorkerTarget.prototype.get displayName): Deleted.
(WebInspector.WorkerTarget.prototype.initialize): Deleted.
* UserInterface/Protocol/WorkerTarget.js: Added.
(WebInspector.WorkerTarget):
(WebInspector.WorkerTarget.prototype.get displayName):
* UserInterface/Test.html:
2016-12-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Frontend should not be resetting TypeProfiler state when switching between ContentViews
https://bugs.webkit.org/show_bug.cgi?id=165648
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WebInspector.loaded):
Update all backends when the state changes.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):
(WebInspector.SourceCodeTextEditor.prototype.set _basicBlockAnnotatorEnabled):
Moved this code to when the global Setting (which affects all editors) changes.
2016-12-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Some resources fetched via Fetch API do not have data
https://bugs.webkit.org/show_bug.cgi?id=165230
<rdar://problem/29449220>
Reviewed by Alex Christensen.
* Localizations/en.lproj/localizedStrings.js:
New "Fetch" and "Fetches" localized strings.
* UserInterface/Models/Resource.js:
(WebInspector.Resource.displayNameForType):
* UserInterface/Models/ResourceCollection.js:
(WebInspector.ResourceCollection.verifierForType):
* UserInterface/Views/CollectionContentView.js:
(WebInspector.CollectionContentView):
* UserInterface/Views/ResourceClusterContentView.js:
(WebInspector.ResourceClusterContentView.prototype.get responseContentView):
* UserInterface/Views/ResourceTreeElement.js:
(WebInspector.ResourceTreeElement.compareResourceTreeElements):
New ResourceType.Fetch. Behave like XHR in most places.
2016-12-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Unable to delete breakpoint from worker script
https://bugs.webkit.org/show_bug.cgi?id=165578
Reviewed by Matt Baker.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype._removeBreakpoint):
Match setting breakpoints. If this is a "URL breakpoint", affect
all targets. If this is a "Script breakpoint", affect just the
single target containing that Script.
2016-12-07 Devin Rousso <dcrousso+webkit@gmail.com>
REGRESSION(r203912): Web Inspector: Navigation sidebar widths are not saved
https://bugs.webkit.org/show_bug.cgi?id=165496
Reviewed by Matt Baker.
* UserInterface/Views/TabBrowser.js:
(WebInspector.TabBrowser):
(WebInspector.TabBrowser.prototype._sidebarWidthDidChange):
(WebInspector.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):
(WebInspector.TabBrowser.prototype._sidebarWidthDidChange): Renamed from _detailsSidebarWidthDidChange.
Add event listener for when the navigation sidebar's width is changed.
* UserInterface/Views/TabContentView.js:
(WebInspector.TabContentView):
(WebInspector.TabContentView.prototype.get navigationSidebarPanel):
(WebInspector.TabContentView.prototype.get navigationSidebarCollapsedSetting):
(WebInspector.TabContentView.prototype.get navigationSidebarWidthSetting):
(WebInspector.TabContentView.prototype.get detailsSidebarPanels):
(WebInspector.TabContentView.prototype.get detailsSidebarCollapsedSetting):
(WebInspector.TabContentView.prototype.get detailsSidebarSelectedPanelSetting):
(WebInspector.TabContentView.prototype.get detailsSidebarWidthSetting):
Add WebInspector.Setting object for the navigation sidebar's width.
2016-12-07 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Control Flow Profiler's event handlers aren't getting removed when ContentView closes
https://bugs.webkit.org/show_bug.cgi?id=165556
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ScriptContentView.js:
(WebInspector.ScriptContentView.prototype.closed):
* UserInterface/Views/TextResourceContentView.js:
(WebInspector.TextResourceContentView.prototype.closed):
2016-12-07 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add ability to distinguish if a Script was parsed as a module
https://bugs.webkit.org/show_bug.cgi?id=164900
<rdar://problem/29323817>
Reviewed by Timothy Hatcher.
* UserInterface/Models/Script.js:
(WebInspector.Script.prototype.get sourceType):
New property of Scripts. SourceType is either Program or Module.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.scriptDidParse):
* UserInterface/Protocol/DebuggerObserver.js:
(WebInspector.DebuggerObserver.prototype.scriptParsed):
Convert incoming module boolean into SourceType when creating new Scripts.
* UserInterface/Models/ScriptSyntaxTree.js:
(WebInspector.ScriptSyntaxTree):
(WebInspector.ScriptSyntaxTree.prototype._recurse):
(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
Update the generic AST for new module specific Esprima types.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.textEditorScriptSourceType):
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype._startWorkerPrettyPrint):
For pretty printing correctly state if this is a module or not for Esprima.
2016-12-07 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Update Esprima to support new features / syntax (**, async/await, trailing comma)
https://bugs.webkit.org/show_bug.cgi?id=164830
<rdar://problem/29293814>
Reviewed by Timothy Hatcher.
* UserInterface/External/Esprima/LICENSE:
* UserInterface/External/Esprima/esprima.js:
Updated to Esprima@7219731 (4.0.0-dev).
* UserInterface/Models/ScriptSyntaxTree.js:
(WebInspector.ScriptSyntaxTree.prototype._recurse):
(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
* UserInterface/Workers/Formatter/ESTreeWalker.js:
(ESTreeWalker.prototype._walkChildren):
Add new nodes (AwaitExpression).
Add new states (async boolean property on Functions).
Remove stale properties (defaults is no longer needed, as parameters
with default values are now AssignmentPatterns).
Update MetaProperty where meta/property are now Identifiers not strings.
* UserInterface/Workers/Formatter/EsprimaFormatter.js:
(EsprimaFormatter.prototype._handleTokenAtNode):
Handle pretty printing of new nodes and identifiers.
* Controllers/FrameResourceManager.js
Address a console.assert warning for stripping assertions in Production.
2016-12-07 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused and mostly untested Page domain commands and events
https://bugs.webkit.org/show_bug.cgi?id=165507
Reviewed by Brian Burg.
* UserInterface/Protocol/PageObserver.js:
(WebInspector.PageObserver.prototype.javascriptDialogOpening):
(WebInspector.PageObserver.prototype.javascriptDialogClosed):
(WebInspector.PageObserver.prototype.scriptsEnabled):
Keep stub in case legacy backends dispatch the event to the frontend.
* UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
* Versions/Inspector-iOS-10.0.json:
* Versions/Inspector-iOS-7.0.json:
* Versions/Inspector-iOS-8.0.json:
* Versions/Inspector-iOS-9.0.json:
* Versions/Inspector-iOS-9.3.json:
Remove handleJavaScriptDialog command from legacy backends because it
doesn't appear as if the iOS backend handled it at all.
2016-12-06 Alexey Proskuryakov <ap@apple.com>
Correct SDKROOT values in xcconfig files
https://bugs.webkit.org/show_bug.cgi?id=165487
rdar://problem/29539209
Reviewed by Dan Bernstein.
Fix suggested by Dan Bernstein.
* Configurations/DebugRelease.xcconfig:
2016-12-05 Matt Baker <mattbaker@apple.com>
Web Inspector: Object.shallowEqual([{}], [{}]) should return true
https://bugs.webkit.org/show_bug.cgi?id=165397
Reviewed by Brian Burg.
* UserInterface/Base/Utilities.js:
(value):
Array.shallowEqual should compare array items using strict equivalence,
and on failure defer to Object.shallowEqual.
2016-12-05 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove legacy styles
https://bugs.webkit.org/show_bug.cgi?id=165389
Reviewed by Matt Baker.
Remove styles for platforms we don't build on anymore (Mavericks
and Mountain Lion). There are also no "unknown-mac" styles to
upgrade to a named platform.
* UserInterface/Base/Platform.js:
Add sierra and remove older unsupported platforms.
* UserInterface/Views/Main.css:
(body):
(body:not(.mavericks)): Deleted.
* UserInterface/Views/TabBar.css:
(body.mavericks .tab-bar > .item:not(.disabled).selected): Deleted.
* UserInterface/Views/Toolbar.css:
(body .toolbar):
(body.window-inactive .toolbar):
(body.mac-platform:not(.docked) .toolbar):
(body.mac-platform:not(.docked)):
(body:not(.mavericks) .toolbar,): Deleted.
(body.window-inactive:not(.mavericks) .toolbar): Deleted.
(body.mac-platform:not(.docked, .mavericks) .toolbar): Deleted.
(body.mac-platform:not(.docked, .mavericks)): Deleted.
Remove mavericks specific styles.
2016-12-02 Andy Estes <aestes@apple.com>
[Cocoa] Adopt the PRODUCT_BUNDLE_IDENTIFIER build setting
https://bugs.webkit.org/show_bug.cgi?id=164492
Reviewed by Dan Bernstein.
* Configurations/WebInspectorUIFramework.xcconfig: Set PRODUCT_BUNDLE_IDENTIFIER to
com.apple.$(PRODUCT_NAME:rfc1034identifier).
* Info.plist: Changed CFBundleIdentifier's value from
com.apple.${PRODUCT_NAME:rfc1034identifier} to ${PRODUCT_BUNDLE_IDENTIFIER}.
2016-12-02 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r192344): Web Inspector: Turning off Code Coverage or Type Profiler logs an error
https://bugs.webkit.org/show_bug.cgi?id=164804
<rdar://problem/29278028>
Reviewed by Matt Baker.
BasicBlockAnnotator and TypeTokenAnnotator were instanciated for a resource in an inactive Debugger tab.
* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype.showDefaultContentViewForTreeElement):
Don't show any content view if we are not in a selected tab.
2016-12-01 Matt Baker <mattbaker@apple.com>
Web Inspector: Show async stack traces for workers
https://bugs.webkit.org/show_bug.cgi?id=165235
<rdar://problem/29450172>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CallFrameTreeElement.css:
(.tree-outline > .children > .item.call-frame.async-boundary):
(.tree-outline:not(.single-thread) > .children > .item.call-frame.async-boundary):
(.tree-outline .item.call-frame.async-boundary::before):
(.tree-outline.single-thread .item.call-frame.async-boundary::before):
(.tree-outline .item.call-frame.async-boundary): Deleted.
Style changes for single/multiple-thread call stacks.
Padding changes to account for Thread tree element.
Make selectors more specific where needed.
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger .tree-outline.single-thread > .item.thread):
(.sidebar > .panel.navigation.debugger .tree-outline.single-thread):
Style changes for single/multiple-thread call stacks.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel):
Use a single tree outline for showing a single thread or multiple threads.
For single-threaded, hide Thread tree element and un-indent children.
(WebInspector.DebuggerSidebarPanel.prototype._targetAdded):
(WebInspector.DebuggerSidebarPanel.prototype._targetRemoved):
(WebInspector.DebuggerSidebarPanel.prototype._updateCallStackTreeOutline):
Update tree style and whether Thread tree element is selectable.
(WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
Remove support for second tree outline.
(WebInspector.DebuggerSidebarPanel.prototype._updateSingleThreadCallStacks): Deleted.
(WebInspector.DebuggerSidebarPanel.prototype._selectActiveCallFrameTreeElement): Deleted.
(WebInspector.DebuggerSidebarPanel.prototype._showSingleThreadCallStacks): Deleted.
(WebInspector.DebuggerSidebarPanel.prototype._showMultipleThreadCallStacks): Deleted.
No longer needed after unifying tree outlines.
* UserInterface/Views/ThreadTreeElement.js:
(WebInspector.ThreadTreeElement.prototype.refresh):
Append call frames from the async stack trace.
2016-11-30 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Clicking on link in Web Inspector can cause UIProcess to crash
https://bugs.webkit.org/show_bug.cgi?id=165157
<rdar://problem/27896562>
Reviewed by Brian Burg.
By correctly disallowing slashes in the scheme Web Inspector resolves
the correct absolute URL and doesn't end up trying to navigate to an
incorrect file URL.
* UserInterface/Base/URLUtilities.js:
(parseURL):
Disallow "/" characters in the scheme portion. (/http://example.com)
Allow path to be optional before a fragment portion. (http://example.com#frag)
2016-11-29 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Improve name sorting in HeapSnapshot data grids
https://bugs.webkit.org/show_bug.cgi?id=165170
<rdar://problem/28784421>
Reviewed by Matt Baker.
When sorting the Name column, group named properties and unnamed
properties and sort them each individually:
- Sort named properties by their property name (property names will be unique if they exist)
- Sort unnamed properties by their class name (guaranteed)
- Sort any tied class names by their object id
This makes using the Object Graph with Name sort easier to follow.
In the ascending sort you see all the named properties first,
followed by the unnamed (internal) properties.
* UserInterface/Views/HeapSnapshotContentView.js:
(WebInspector.HeapSnapshotObjectGraphContentView):
Since this data grid column now sorts on more than just the "Class Name"
rename it to "Name".
* UserInterface/Views/HeapSnapshotDataGridTree.js:
(WebInspector.HeapSnapshotDataGridTree.buildSortComparator):
Make the sort of the `className` column more general to handle sorting
by property names, class names, and object identifiers.
* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.get propertyName):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
Provide a lazy `propertyName` accessor where we compute it once and stash
it on the DataGridNode to avoid extra work when resorting.
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populate.propertyName):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populate):
In the initial populated sort, provide the necessary property name property
the sort comparator expects.
2016-11-29 Matt Baker <mattbaker@apple.com>
Web Inspector: Breakpoints button enabled state is too subtle
https://bugs.webkit.org/show_bug.cgi?id=165153
Reviewed by Joseph Pecoraro.
* UserInterface/Images/Breakpoints.svg:
Change to path so stroke and fill can be styled.
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-breakpoints):
(.sidebar > .panel.navigation.debugger > .navigation-bar .debugger-breakpoints.activated):
Fill and stroke styles for the active and inactive breakpoint button.
2016-11-28 Matt Baker <mattbaker@apple.com>
Web Inspector: Debugger should have an option for showing asynchronous call stacks
https://bugs.webkit.org/show_bug.cgi?id=163230
<rdar://problem/28698683>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
New string for generic async call stack boundary label: "(async)".
* UserInterface/Controllers/DebuggerManager.js:
Create async stack depth setting and set default depth.
(WebInspector.DebuggerManager.prototype.get asyncStackTraceDepth):
(WebInspector.DebuggerManager.prototype.set asyncStackTraceDepth):
Make async stack depth setting accessible to the frontend.
(WebInspector.DebuggerManager.prototype.initializeTarget):
Set async stack depth value on the target.
(WebInspector.DebuggerManager.prototype.debuggerDidPause):
Plumbing for the async stack trace payload.
* UserInterface/Models/ConsoleMessage.js:
(WebInspector.ConsoleMessage):
Updated for new StackTrace.fromPayload use.
* UserInterface/Models/DebuggerData.js:
(WebInspector.DebuggerData):
(WebInspector.DebuggerData.prototype.get asyncStackTrace):
(WebInspector.DebuggerData.prototype.updateForPause):
(WebInspector.DebuggerData.prototype.updateForResume):
More plumbing.
* UserInterface/Models/StackTrace.js:
Update frontend model for use as new protocol object Console.StackTrace,
which was previously an alias for a simple array of Console.CallFrames.
(WebInspector.StackTrace):
(WebInspector.StackTrace.fromPayload):
(WebInspector.StackTrace.fromString):
(WebInspector.StackTrace.prototype.get topCallFrameIsBoundary):
(WebInspector.StackTrace.prototype.get parentStackTrace):
* UserInterface/Protocol/DebuggerObserver.js:
(WebInspector.DebuggerObserver.prototype.paused):
More plumbing.
* UserInterface/Views/CallFrameTreeElement.css:
(.tree-outline .item.call-frame.async-boundary):
Use default cursor since boundary element is not selectable.
(.tree-outline .item.call-frame.async-boundary .icon):
(.tree-outline .item.call-frame.async-boundary::before,):
(.tree-outline .item.call-frame.async-boundary::after):
(.tree-outline .item.call-frame.async-boundary::before):
Dimmed text and divider line styles for boundary element.
* UserInterface/Views/CallFrameTreeElement.js:
(WebInspector.CallFrameTreeElement):
Add a flag denoting whether the call frame is an async call trace
boundary, and set styles accordingly.
* UserInterface/Views/DebuggerSidebarPanel.js:
Set async stack trace depth, if supported.
(WebInspector.DebuggerSidebarPanel.prototype._updateSingleThreadCallStacks):
Add call frames for async stack traces to the call stack TreeOutline.
(WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
Ensure that async call frames cannot become the active call frame.
* UserInterface/Views/Variables.css:
(:root):
Add --text-color-gray-medium, for dimmed text in async boundary element.
2016-11-18 Matt Baker <mattbaker@apple.com>
Web Inspector: TimelineDataGridNode assertions when refreshing page
https://bugs.webkit.org/show_bug.cgi?id=162642
<rdar://problem/28505898>
Reviewed by Timothy Hatcher.
This patch fixes a number of deficiencies in the Network tab that caused
TimelineDataGridNode graphs to refresh before the tab became visible.
* UserInterface/Views/ElementsTabContentView.js:
(WebInspector.ElementsTabContentView):
(WebInspector.ElementsTabContentView.prototype.shown):
Drive-by fix: defer showing the DOM content view until the tab is shown.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView):
Drive-by event listener cleanup.
(WebInspector.NetworkGridContentView.prototype.get startTime):
(WebInspector.NetworkGridContentView.prototype.get endTime):
Back endTime with a variable, instead of using the ruler value which
isn't valid before the tab is shown for the first time.
(WebInspector.NetworkGridContentView.prototype.shown):
Force the grid to update its layout, and that of the Timeline column ruler.
During layout the ruler's secondsPerPixel value is used, which isn't
valid until the ruler does an initial layout.
(WebInspector.NetworkGridContentView.prototype.reset):
Clear pending records. This was causing duplicates to appear when the
inspected page was refreshed multiple times prior to showing the Network
tab for the first time.
(WebInspector.NetworkGridContentView.prototype.layout):
Should more closely match behavior in NetworkTimelineView.prototype.layout.
Graph end time padding is added if no longer updating the current time.
(WebInspector.NetworkGridContentView.prototype._networkTimelineRecordAdded):
Track endTime of the last record added, so that the graph end time can
be padded once the current time is no longer being updated.
(WebInspector.NetworkGridContentView.prototype._update):
(WebInspector.NetworkGridContentView.prototype._stopUpdatingCurrentTime):
Graph end time padding shouldn't be applied here, since this isn't called
if the inspected page finishes loading before the view is shown.
(WebInspector.NetworkGridContentView.prototype._clearNetworkItems): Deleted.
Replaced by an arrow function.
* UserInterface/Views/NetworkSidebarPanel.js:
(WebInspector.NetworkSidebarPanel.prototype._networkTimelineReset):
Don't show the content view if the tab is hidden.
2016-11-17 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Shift clicking on named color value only shows its hex form
https://bugs.webkit.org/show_bug.cgi?id=162758
Reviewed by Timothy Hatcher.
* UserInterface/Models/Color.js:
(WebInspector.Color.prototype.nextFormat):
Reworked the logic for the formatting order to be the following:
- Long HEX and Long HEXAlpha
- RGB and RGBA
- HSL and HSLA
- Keyword (if applicable)
- Short HEX (if applicable)
- Short HEXAlpha (if applicable)
It will only show formats with alpha values if the color value has an alpha that is not 1.
If the alpha is not 1, it will not show formats with non-alpha values.
The changes to this function have no effect on the context menu items of InlineSwatch
elements. The purpose of each of those items is to allow the user to change the format to
a specified type, whereas WebInspector.Color.prototype.nextFormat is used to cycle through
all of the relevant formats.
(WebInspector.Color.prototype._toRGBString):
(WebInspector.Color.prototype._toRGBAString):
(WebInspector.Color.prototype._toHSLString):
(WebInspector.Color.prototype._toHSLAString):
Unrelated fix of extra decimals when converting from HEX to RGB and HSL.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor._inlineSwatchValueChanged):
Removed assertion for `_hasActiveInlineSwatchEditor` since the value may change from
switching the format of a color swatch (Shift-Click).
2016-11-16 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Background tabs are often updating non-stop because they think they are visible
https://bugs.webkit.org/show_bug.cgi?id=164841
<rdar://problem/29298658>
Reviewed by Matt Baker.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView.prototype._networkTimelineRecordAdded):
* UserInterface/Views/TimelineRecordingContentView.js:
(WebInspector.TimelineRecordingContentView.prototype._update):
Don't constantly update when this tab is not in the foreground.
2016-11-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: SourceCodeTextEditor should display execution lines for background threads
https://bugs.webkit.org/show_bug.cgi?id=164679
<rdar://problem/29233026>
Reviewed by Timothy Hatcher.
There may be multiple threads paused in the same content view. With
this change we should a thread indicator for each primary line a
thread is paused on. It uses the same inline line indicator that
inline errors/warnings (issues) use.
When there is a single thread (just the Page) we don't show thread
indicators. But as soon as there are multiple threads we start
managing and showing them. The line indicator contains the name of
the thread on the side.
Note that SourceCodeTextEditor maintains the thread indicators, but
it still always handles the ActiveCallFrame as it used to, pushing
values down into TextEditor. The ActiveCallFrame styles override
the thread line indicators (albeit with the same styles). The reason
these are still separate is that TextEditor has some special styles
regarding its gutter for the active execution line. Eventually we
may want to find a way to push this up into SourceCodeTextEditor.
* Localizations/en.lproj/localizedStrings.js:
New string "%d Threads" when multiple threads are on the same line.
* UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
(WebInspector.ScopeChainDetailsSidebarPanel):
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._activeCallFrameDidChange):
Update Watch Expressions when the active call frame changes.
* UserInterface/Views/SourceCodeTextEditor.css:
(.source-code.text-editor > .CodeMirror .line-indicator-widget):
(.source-code.text-editor > .CodeMirror .line-indicator-widget.inline):
(.source-code.text-editor > .CodeMirror .line-indicator-widget > .arrow):
(.source-code.text-editor > .CodeMirror .line-indicator-widget.inline > .arrow):
(.source-code.text-editor > .CodeMirror .line-indicator-widget > .icon):
(.source-code.text-editor > .CodeMirror .line-indicator-widget > .text):
(.source-code.text-editor > .CodeMirror .line-indicator-widget.inline > .text):
Share line indicator widget styles between issue widgets and thread widgets.
(.source-code.text-editor > .CodeMirror .thread-indicator):
(.source-code.text-editor > .CodeMirror .thread-widget):
(.source-code.text-editor > .CodeMirror .thread-widget.inline):
(.source-code.text-editor > .CodeMirror .thread-widget.inline > .arrow):
Colors for the thread-widget line-indicators.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor):
(WebInspector.SourceCodeTextEditor.prototype.close):
New event listeners handling for Target added / removed events.
(WebInspector.SourceCodeTextEditor.prototype._targetAdded):
(WebInspector.SourceCodeTextEditor.prototype._targetRemoved):
Update thread indicators as needed.
(WebInspector.SourceCodeTextEditor.prototype._looselyMatchesSourceCodeLocation):
More generic match based just on the URLs. Even if the exact script comes
from a different target, if they share the same URL that is fine.
(WebInspector.SourceCodeTextEditor.prototype._callFramesDidChange):
(WebInspector.SourceCodeTextEditor.prototype._addThreadIndicatorForTarget):
(WebInspector.SourceCodeTextEditor.prototype._removeThreadIndicatorForTarget):
(WebInspector.SourceCodeTextEditor.prototype._threadIndicatorWidgetForLine):
(WebInspector.SourceCodeTextEditor.prototype._updateThreadIndicatorWidget):
(WebInspector.SourceCodeTextEditor.prototype._handleThreadIndicatorWidgetClick):
Manage thread line indicator widgets. There are 3 maps we maintain.
1. line -> [threads]
List of threads paused on a line, needed for the UI text.
2. line -> widget
Gets the widget on a line so we can modify and eventually remove it.
3. target -> line
If a target is removed, we need to know what line it had an indicator on.
(WebInspector.SourceCodeTextEditor.prototype._isWidgetToggleable):
Generalize for all of our different line indicator widgets.
(WebInspector.SourceCodeTextEditor.prototype._contentDidPopulate):
(WebInspector.SourceCodeTextEditor.prototype.textEditorUpdatedFormatting):
(WebInspector.SourceCodeTextEditor.prototype._reinsertAllThreadIndicators):
When first populated, or reformatted, clear and reinsert all widgets.
(WebInspector.SourceCodeTextEditor.prototype._reinsertAllIssues):
(WebInspector.SourceCodeTextEditor.prototype._logCleared):
(WebInspector.SourceCodeTextEditor.prototype._clearIssueWidgets): Renamed.
Rename _clearWidgets to _clearIssueWidgets.
2016-11-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused and untested Page.setTouchEmulationEnabled command
https://bugs.webkit.org/show_bug.cgi?id=164793
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
Tooltips for new button.
* UserInterface/Base/Main.js:
(WebInspector.loaded):
New global setting.
* UserInterface/Views/DOMTreeContentView.js:
(WebInspector.DOMTreeContentView):
(WebInspector.DOMTreeContentView.prototype.get navigationItems):
(WebInspector.DOMTreeContentView.prototype._showPrintStylesSettingChanged):
(WebInspector.DOMTreeContentView.prototype._togglePrintStylesSetting):
New navigation bar button to toggle print styles.
* UserInterface/Controllers/CSSStyleManager.js:
(WebInspector.CSSStyleManager.prototype.mediaTypeChanged):
After toggling styles we will need to refresh styles, so provide
a meaningful way to trigger refreshing styles from the frontend.
* UserInterface/Images/Printer.svg: Added.
* UserInterface/Images/gtk/Printer.svg: Added.
New Printer icon for enabling / disabling print styles.
* UserInterface/Images/gtk/Crosshair.svg:
* UserInterface/Images/gtk/LayerBorders.svg:
* UserInterface/Images/gtk/NavigationItemCurleyBraces.svg:
* UserInterface/Images/gtk/NavigationItemTypes.svg:
* UserInterface/Images/gtk/PaintFlashing.svg:
* UserInterface/Images/gtk/ShadowDOM.svg:
* UserInterface/Images/gtk/ToggleLeftSidebar.svg:
* UserInterface/Images/gtk/ToggleRightSidebar.svg:
* UserInterface/Images/gtk/UpDownArrows.svg:
Fix a number of existing GTK images to have activated styles.
2016-11-15 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r208248): Web Inspector: Pressing Left Arrow breaks autocomplete
https://bugs.webkit.org/show_bug.cgi?id=164391
<rdar://problem/29102408>
Reviewed by Matt Baker.
Unroll r208248.
* UserInterface/Controllers/CodeMirrorCompletionController.js:
(WebInspector.CodeMirrorCompletionController):
(WebInspector.CodeMirrorCompletionController.prototype.updateCompletions):
(WebInspector.CodeMirrorCompletionController.prototype.isCompletionChange):
(WebInspector.CodeMirrorCompletionController.prototype.hideCompletions):
(WebInspector.CodeMirrorCompletionController.prototype.close):
(WebInspector.CodeMirrorCompletionController.prototype.completionSuggestionsSelectedCompletion):
(WebInspector.CodeMirrorCompletionController.prototype._createCompletionHintMarker):
(WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint.update):
(WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint):
(WebInspector.CodeMirrorCompletionController.prototype._commitCompletionHint.update):
(WebInspector.CodeMirrorCompletionController.prototype._commitCompletionHint):
(WebInspector.CodeMirrorCompletionController.prototype._removeLastChangeFromHistory):
(WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.clearMarker):
(WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.update):
(WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint):
(WebInspector.CodeMirrorCompletionController.prototype._completeAtCurrentPosition):
(WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions):
2016-11-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused and untested Page.setTouchEmulationEnabled command
https://bugs.webkit.org/show_bug.cgi?id=164793
Reviewed by Matt Baker.
* UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
* Versions/Inspector-iOS-10.0.json:
* Versions/Inspector-iOS-7.0.json:
* Versions/Inspector-iOS-8.0.json:
* Versions/Inspector-iOS-9.0.json:
* Versions/Inspector-iOS-9.3.json:
2016-11-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: URL Breakpoints that resolve in multiple workers should only appear in the UI once
https://bugs.webkit.org/show_bug.cgi?id=164334
<rdar://problem/29073523>
Reviewed by Matt Baker.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint):
Don't add a duplicate BreakpointTreeElements for the same Breakpoint.
2016-11-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Worker debugging should pause all targets and view call frames in all targets
https://bugs.webkit.org/show_bug.cgi?id=164305
<rdar://problem/29056192>
Reviewed by Timothy Hatcher.
This implements a policy where, when one Target ("Thread") pauses
the frontend triggers a pause in all other Targets. The intended
user experience is "all threads pause" whenever the frontend shows
the debugger paused UI.
DebuggerManager has a few straight forward changes:
- The paused state reflects if any target is paused.
- The Paused Event is fired when going from !paused -> paused.
This means when the first target pauses.
- The Resumed Event is fired when going from paused -> !paused.
This means only after all targets have resumed.
- The CallFrameDidChange Event now includes the Target that updated.
When a Target first pauses the frontend then immediately pauses all
other Targets. This puts them into a "pausing" state (we display as
Idle) and they will pause as soon as they start executing JavaScript.
When a Target steps the "paused" state isn't changing. So this is
just a CallFramesDidChange update.
When clicking Resume we resume all targets. This is will be the normal,
expected way users resume execution. Note that one of the threads may
then hit a breakpoint and re-pause all threads.
Sometimes when multiple threads are paused you may want to run an
individual thread to completion but keep other threads paused. There
is a context menu on the ThreadTreeElement to resume just that
single thread. It will continue and pause for its next run loop.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Images/Thread.svg: Added.
* UserInterface/Images/gtk/Thread.svg: Added.
* UserInterface/Main.html:
New strings and files.
* UserInterface/Base/Main.js:
(WebInspector.loaded):
* UserInterface/Test/Test.js:
(WebInspector.loaded):
Place the TargetManager first since other managers may want to listen
for TargetAdded / TargetRemoved events.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.get paused):
This is now a computed state.
(WebInspector.DebuggerManager.prototype.pause):
(WebInspector.DebuggerManager.prototype.resume):
Affect all targets.
(WebInspector.DebuggerManager.prototype.stepOver):
(WebInspector.DebuggerManager.prototype.stepInto):
(WebInspector.DebuggerManager.prototype.stepOut):
(WebInspector.DebuggerManager.prototype.reset):
Update to use the paused computed property.
(WebInspector.DebuggerManager.prototype.continueUntilNextRunLoop):
Issue the new Debugger.continueUntilNextRunLoop command
on a given target.
(WebInspector.DebuggerManager.prototype.initializeTarget):
When a new Target is created and we were already paused,
then start that Worker in a paused state.
(WebInspector.DebuggerManager.prototype.debuggerDidPause):
Recover from bad cases where the backend informs the frontend about
internal JavaScript that it shouldn't know about. Legacy backend do
this but also there are corner cases we need to handle.
Dispatch events appropriately now that multiple targets may be paused.
(WebInspector.DebuggerManager.prototype._didResumeInternal):
Dispatch events appropriately now that multiple targets may be paused.
(WebInspector.DebuggerManager.prototype._targetRemoved):
Remove debugger data for targets that go away to avoid leaks.
* UserInterface/Models/DebuggerData.js:
(WebInspector.DebuggerData):
(WebInspector.DebuggerData.prototype.get paused):
(WebInspector.DebuggerData.prototype.get pausing):
Move some more per-Target state into DebuggerData.
(WebInspector.DebuggerData.prototype.pauseIfNeeded):
(WebInspector.DebuggerData.prototype.resumeIfNeeded):
(WebInspector.DebuggerData.prototype.continueUntilNextRunLoop):
These should only be called by DebuggerManager. They correctly
update the state of the DebuggerData for this Target, and also
issue the underlying command to the target.
(WebInspector.DebuggerData.prototype.updateForPause):
(WebInspector.DebuggerData.prototype.updateForResume):
Handle a special case where continueUntilNextRunLoop triggers
an invisible "pause" on the backend that we should mirror.
* UserInterface/Protocol/Target.js:
(WebInspector.MainTarget):
(WebInspector.MainTarget.prototype.get displayName):
(WebInspector.MainTarget.prototype.initialize):
Better display names.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype._debuggerDidPause):
(WebInspector.DebuggerSidebarPanel.prototype._debuggerDidResume):
(WebInspector.DebuggerSidebarPanel.prototype._updateSingleThreadCallStacks):
(WebInspector.DebuggerSidebarPanel.prototype._selectActiveCallFrameTreeElement):
(WebInspector.DebuggerSidebarPanel.prototype._showSingleThreadCallStacks):
(WebInspector.DebuggerSidebarPanel.prototype._showMultipleThreadCallStacks):
(WebInspector.DebuggerSidebarPanel.prototype._findThreadTreeElementForTarget):
(WebInspector.DebuggerSidebarPanel.prototype._targetAdded):
(WebInspector.DebuggerSidebarPanel.prototype._targetRemoved):
(WebInspector.DebuggerSidebarPanel.prototype._debuggerCallFramesDidChange):
(WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
The DebuggerSidebar still has a single "Call Stacks" section, but maintains
two TreeOutlines and only shows one at a time. The Single Thread view shows
a flat list of the call frames for the Main Target when it is the only target.
The Multiple Threads view shows a list of Threads and their call frames.
We always keep both up to date, because we may need to swap between them
purely as Targets are added / removed. There is a bit of extra logic to
ensure we select elements properly based only on the visible tree outline.
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView.prototype.didAppendConsoleMessageView):
When evaluating in a particular target, "runAfterPendingDispatches"
must wait for all other commands in that particular target to have
completed. So use the target specific version.
* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
Gracefully handle a few more TreeElements without a represented object.
* UserInterface/Views/IdleTreeElement.css: Added.
(.details-section.call-stack .idle .icon):
* UserInterface/Views/IdleTreeElement.js: Added.
(WebInspector.IdleTreeElement):
Very basic tree element to encapsulate an Idle call frame with an
empty represented object.
* UserInterface/Views/ThreadTreeElement.css: Added.
(.details-section.call-stack .thread .icon):
* UserInterface/Views/ThreadTreeElement.js: Added.
(WebInspector.ThreadTreeElement):
(WebInspector.ThreadTreeElement.prototype.get target):
(WebInspector.ThreadTreeElement.prototype.refresh):
(WebInspector.ThreadTreeElement.prototype.onattach):
(WebInspector.ThreadTreeElement.prototype.oncontextmenu):
ThreadTreeElement has no represented object, but makes it easy
to refresh a list of CallFrameTreeElements for a given target.
2016-11-14 Timothy Hatcher <timothy@apple.com>
Web Inspector: Disable Warning Filter in Debugger Tab By Default
https://bugs.webkit.org/show_bug.cgi?id=164723
rdar://problem/29251780
Reviewed by Joseph Pecoraro.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel): Made "debugger-show-resources-with-issues-only" false by default.
2016-11-14 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Settings tab should look more like a native macOS view
https://bugs.webkit.org/show_bug.cgi?id=164708
<rdar://problem/29241296>
Reviewed by Timothy Hatcher.
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings):
(.content-view.settings > .header):
(.content-view.settings > .setting-container):
Match macOS Sierra default font size for settings view.
(.content-view.settings > .setting-container > .setting-name):
(.content-view.settings > .setting-container > .setting-value-controller):
(.content-view.settings > .setting-container > .setting-value-controller input):
(.content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]):
Make checkbox larger.
(.content-view.settings > .setting-container > .setting-value-controller select):
(.content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
Decrease the width of the number fields to make them just wide enough to fit 2 digit numbers.
2016-11-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Type Profiler and Code Coverage Profiler should work in Workers
https://bugs.webkit.org/show_bug.cgi?id=164682
Reviewed by Darin Adler.
* UserInterface/Controllers/BasicBlockAnnotator.js:
* UserInterface/Models/ScriptSyntaxTree.js:
(WebInspector.ScriptSyntaxTree.prototype.updateTypes):
Use the target associated with the Script.
* UserInterface/Protocol/Target.js:
(WebInspector.WorkerTarget.prototype.initialize):
When initializing a Worker Target, match the existing state
of the Page for these profilers.
* UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptTypeInformation):
(WebInspector.SourceCodeTextEditor.prototype.willDismissPopover):
Use the correct target for this Script / Resource.
(WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):
(WebInspector.SourceCodeTextEditor.prototype.set _basicBlockAnnotatorEnabled):
Enable / disable for all targets when toggling profilers.
2016-11-11 Anthony Ricaud <rik@webkit.org>
Web Inspector: Whitespace in Editor should be less visible than regular content
https://bugs.webkit.org/show_bug.cgi?id=164660
Reviewed by Matt Baker.
* UserInterface/Views/CodeMirrorOverrides.css:
(.show-whitespace-characters .CodeMirror .cm-whitespace::before):
2016-11-11 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Call RuntimeAgent.disableControlFlowProfiler when Code Coverage Profiler is turned off
https://bugs.webkit.org/show_bug.cgi?id=163407
<rdar://problem/28764230>
Reviewed by Timothy Hatcher.
Turning Type Profiler off by clicking [T] icon now disables its backend by calling RuntimeAgent.disableTypeProfiler().
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):
2016-11-11 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Settings tab: make the header smaller to fit more content
https://bugs.webkit.org/show_bug.cgi?id=164613
<rdar://problem/29206007>
Reviewed by Timothy Hatcher.
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings > .header):
Use hv units for margin. 1vh = 1% of viewport height. When Web Inspector window is taller, the margin is larger.
(.content-view.settings > .setting-container):
Convert padding to margin to make spacing between the header and the first section better.
2016-11-10 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Call RuntimeAgent.disableControlFlowProfiler when Code Coverage Profiler is turned off
https://bugs.webkit.org/show_bug.cgi?id=163407
<rdar://problem/28764230>
Reviewed by Joseph Pecoraro.
Turning Code Coverage off by clicking [C] icon now disables its backend by calling RuntimeAgent.disableControlFlowProfiler().
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.set _basicBlockAnnotatorEnabled):
2016-11-10 Aaron Chu <aaron_chu@apple.com>
Web Inspector: AXI: clarify button roles (e.g. toggle or popup button)
https://bugs.webkit.org/show_bug.cgi?id=130726
<rdar://problem/16420420>
Reviewed by Brian Burg.
Updated Inspector to show the button type using the new mapping information.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/DOMNode.js:
(WebInspector.DOMNode.prototype.accessibilityProperties.accessibilityPropertiesCallback):
(WebInspector.DOMNode.prototype.accessibilityProperties):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility.accessibilityPropertiesCallback):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility):
2016-11-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: DebuggerManager.Event.Resumed introduces test flakiness
https://bugs.webkit.org/show_bug.cgi?id=161951
<rdar://problem/28295767>
Reviewed by Brian Burg.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.debuggerDidResume):
Now, Debugger.resumed events really mean the debugger resumed,
so act immediately instead of guessing. We must still guess
in legacy backends.
* UserInterface/Test/Test.js:
When the inspector frontend encounters an issue, log it.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._debuggerDidPause):
(WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
Always enable the step out button. I don't think it makes sense to disable
it sometimes, and if there are issues with this we should solve the issues
instead of hiding them.
2016-11-09 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Associate Worker Resources with the Worker and not the Page
https://bugs.webkit.org/show_bug.cgi?id=164342
<rdar://problem/29075775>
Reviewed by Timothy Hatcher.
A Target may have its own list of Resource. For example, Workers may
request any resources via XHR/Fetch. So we associate a ResourceCollection
with a Target, and ensure we show them in Web Inspector as you would expect.
At this point, Target starts acting like Frame. Target has a resourceCollection
and extraScriptsCollection just like Frame. Target has events for ResourceAdded
just like Frame.
Even though Resource loads are happening in Workers, the Network data
still comes from the Page's Network agent. The added "targetId" data
with the Resource will let us associate a Resoure with a Target.
When opening inspector after a page has loaded, the frontend loads Resources
via the Page.getResourceTree path. In this case, the frontend may be
informed of Resources for a Target that it does not know about yet. In
these cases, it sets them aside as Orphaned resources for a target. Later,
when that Target is created, it will adopt its Orphaned resources.
Places that used to listen to just Frame.Event.ResourceWasAdded should now
also listen for Target.Event.ResourceAdded to ensure it sees the resources
associated with non-page targets.
* UserInterface/Protocol/Target.js:
(WebInspector.Target):
(WebInspector.Target.prototype.get identifier):
(WebInspector.Target.prototype.get resourceCollection):
(WebInspector.Target.prototype.get extraScriptCollection):
(WebInspector.Target.prototype.addResource):
(WebInspector.Target.prototype.adoptResource):
(WebInspector.Target.prototype.addScript):
Give Target resource collections.
(WebInspector.MainTarget):
(WebInspector.MainTarget.prototype.get mainResource):
Pass through to the FrameResourceManager for the MainTarget.
(WebInspector.WorkerTarget):
(WebInspector.WorkerTarget.prototype.initialize):
Adopt orphaned resources on creation.
* UserInterface/Models/Resource.js:
(WebInspector.Resource):
(WebInspector.Resource.prototype.get target):
(WebInspector.Resource.prototype.get type):
Resource now has a Target. During creation, if there is a targetId
then we must produce a Target or null (orphaned).
(WebInspector.Resource.prototype.associateWithScript):
When associating a Resource with a Script, we can use this opportunity
to convert from an XML / Other type to Script.
* UserInterface/Models/Script.js:
(WebInspector.Script.prototype._resolveResource):
When associating Scripts with a resource we must associate resources
from within the proper Target. If it is the Main target we still use
the FrameResourceManager which keep searches across all Frames.
* UserInterface/Protocol/NetworkObserver.js:
(WebInspector.NetworkObserver.prototype.requestWillBeSent):
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype.initialize):
(WebInspector.FrameResourceManager.prototype.frameDidNavigate):
(WebInspector.FrameResourceManager.prototype.resourceRequestWillBeSent):
(WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
(WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
(WebInspector.FrameResourceManager.prototype.adoptOrphanedResourcesForTarget):
(WebInspector.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
(WebInspector.FrameResourceManager.prototype._addResourceToTarget):
(WebInspector.FrameResourceManager.prototype._createResource):
(WebInspector.FrameResourceManager.prototype._addFrameTreeFromFrameResourceTreePayload):
(WebInspector.FrameResourceManager.prototype._addOrphanedResource):
(WebInspector.FrameResourceManager.prototype._mainFrameDidChange):
(WebInspector.FrameResourceManager.prototype._addNewResourceToFrame): Deleted.
When creating Resources from Network events we may now have a targetId.
Once created a Resource must be associated with a Frame, Target, or orphaned.
* UserInterface/Main.html:
* UserInterface/Views/TargetTreeElement.js: Removed.
* UserInterface/Views/WorkerTreeElement.js: Added.
(WebInspector.WorkerTreeElement):
(WebInspector.WorkerTreeElement.prototype.get target):
(WebInspector.WorkerTreeElement.prototype.onexpand):
(WebInspector.WorkerTreeElement.prototype.oncollapse):
(WebInspector.WorkerTreeElement.prototype.onpopulate):
(WebInspector.WorkerTreeElement.prototype.updateSourceMapResources):
(WebInspector.WorkerTreeElement.prototype.onattach):
(WebInspector.WorkerTreeElement.prototype.compareChildTreeElements):
(WebInspector.WorkerTreeElement.prototype._handleContextMenuEvent):
(WebInspector.WorkerTreeElement.prototype._scriptAdded):
(WebInspector.WorkerTreeElement.prototype._resourceAdded):
Convert TargetTreeElement to WorkerTreeElement as that is clearer.
Behave like FrameTreeElement and populate resources on creation,
handle SourceMapResource, etc.
* UserInterface/Views/FolderizedTreeElement.js:
(WebInspector.FolderizedTreeElement.prototype.registerFolderizeSettings):
(WebInspector.FolderizedTreeElement.prototype._compareTreeElementsByMainTitle):
(WebInspector.FolderizedTreeElement.prototype._parentTreeElementForRepresentedObject):
If the display name for a folder is `null` then there is no folder,
and place such child tree elements at the top level. This will be
the case for a Worker's Script's, which we choose not to folderize.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.scriptDidParse):
* UserInterface/Controllers/TargetManager.js:
(WebInspector.TargetManager.prototype.targetForIdentifier):
* UserInterface/Models/DefaultDashboard.js:
(WebInspector.DefaultDashboard):
* UserInterface/Controllers/TimelineManager.js:
(WebInspector.TimelineManager):
* UserInterface/Controllers/WorkerManager.js:
(WebInspector.WorkerManager.prototype.workerCreated):
* UserInterface/Views/OpenResourceDialog.js:
(WebInspector.OpenResourceDialog.prototype.didDismissDialog):
(WebInspector.OpenResourceDialog.prototype.didPresentDialog):
(WebInspector.OpenResourceDialog.prototype._addScriptsForTarget): Deleted.
(WebInspector.OpenResourceDialog.prototype._addResourcesForTarget): Added.
Ensure those that listen for Frame.Event.ResourceWasAdded now also
listen for Target.Event.ResourceAdded.
* UserInterface/Views/ContextMenuUtilities.js:
(WebInspector.appendContextMenuItemsForSourceCode):
(WebInspector.appendContextMenuItemsForResource): Deleted.
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype.appendContextMenuItems):
* UserInterface/Views/ResourceTreeElement.js:
(WebInspector.ResourceTreeElement.prototype._updateTitles):
(WebInspector.ResourceTreeElement.prototype._handleContextMenuEvent):
Generalize ContextMenu helper to SourceCode so it can be used on a Script or Resource.
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel.prototype.inspect):
When looking at a WorkerTarget's mainResource (Script) show the
Resource Details sidebar for its Resource.
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel):
(WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
(WebInspector.ResourceSidebarPanel.prototype._scriptsCleared):
(WebInspector.ResourceSidebarPanel.prototype._addTargetWithMainResource):
(WebInspector.ResourceSidebarPanel.prototype._targetRemoved):
(WebInspector.ResourceSidebarPanel.prototype._addScriptForNonMainTarget): Deleted.
Simplify ResourceSidebarPanel to only handle adding WorkerTreeElements,
which will do the rest of the work for their Resources/Scripts.
* UserInterface/Views/SourceCodeTreeElement.js:
(WebInspector.SourceCodeTreeElement.prototype.descendantResourceTreeElementTypeDidChange):
When we were changing the type of a resource, it would remove and re-insert.
This would collapse the parent if it was the only child in removal, and not
expand the parent when re-inserting. This ensures we re-expand.
2016-11-09 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Settings tab sections overlap each other in docked Inspector window
https://bugs.webkit.org/show_bug.cgi?id=164564
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings):
Make settings sections non-shrinkable and make the content view vertically scrollable.
(.content-view.settings > .setting-container):
Set vertical padding that looks good for non-shrinkable sections.
2016-11-09 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Settings tab: Checkbox labels should be clickable
https://bugs.webkit.org/show_bug.cgi?id=164470
<rdar://problem/29133787>
Reviewed by Matt Baker.
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView.prototype.initialLayout):
Add a label element to make checkboxes clickable.
2016-11-09 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Allow FolderTreeElement to display content when selected
https://bugs.webkit.org/show_bug.cgi?id=164407
Reviewed by Timothy Hatcher.
* UserInterface/Main.html:
Add CollectionContentView and TitleView.
* UserInterface/Base/Main.js:
* UserInterface/Views/ContentView.js:
(WebInspector.ContentView.createFromRepresentedObject):
(WebInspector.ContentView.isViewable):
Add support for Collection as the representedObject of a content view.
* UserInterface/Views/CollectionContentView.css: Added.
(.content-view.collection):
(.content-view.collection > .content-view):
* UserInterface/Views/CollectionContentView.js: Added.
(WebInspector.CollectionContentView):
(WebInspector.CollectionContentView.prototype.initialLayout):
(WebInspector.CollectionContentView.prototype._addContentViewForItem):
(WebInspector.CollectionContentView.prototype._removeContentViewForItem):
(WebInspector.CollectionContentView.prototype._handleItemAdded):
(WebInspector.CollectionContentView.prototype._handleItemRemoved):
(WebInspector.CollectionContentView.prototype._handleContentError):
Takes in a Collection when constructed, and attempts to display a sub-ContentView for each
item in the collection if the type of the collection is viewable en masse. Currently, this
is only supported for WebInspector.Resource.Type.Image collections.
* UserInterface/Views/ResourceContentView.js:
(WebInspector.ResourceContentView.prototype._contentError):
Dispatch an event whenever the content fails to load.
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/ResourcesTabContentView.js:
(WebInspector.ResourcesTabContentView.prototype.canShowRepresentedObject):
Allow FolderTreeElements to be selected.
* UserInterface/Views/TitleView.css: Added.
(.title-view):
* UserInterface/Views/TitleView.js: Added.
(WebInspector.TitleView):
Basic view that displays the given text in the center of the viewable area.
2016-11-03 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Stack overflow when searching a timeline recording for JS function names
https://bugs.webkit.org/show_bug.cgi?id=161784
<rdar://problem/28219498>
Reviewed by Timothy Hatcher.
_populate method of ProfileNodeDataGridNode and ProfileDataGridNode traverses
all children of a given node. makeVisible function of DataGrid#_applyFiltersToNode
traverses all its parents to expand them. This creates an infinite recursion.
Remove "populate" event before appending child nodes to prevent it.
* UserInterface/Views/ProfileDataGridNode.js:
(WebInspector.ProfileDataGridNode.prototype._populate):
(WebInspector.ProfileDataGridNode):
* UserInterface/Views/ProfileNodeDataGridNode.js:
(WebInspector.ProfileNodeDataGridNode.prototype._populate):
(WebInspector.ProfileNodeDataGridNode):
2016-11-03 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Modify FolderTreeElement to have a Collection as a its represented object
https://bugs.webkit.org/show_bug.cgi?id=164349
Reviewed by Matt Baker.
* UserInterface/Views/FolderTreeElement.js:
(WebInspector.FolderTreeElement):
Now accepts a representedObject parameter, which must be a WebInspector.Collection.
* UserInterface/Views/FolderizedTreeElement.js:
(WebInspector.FolderizedTreeElement.prototype.registerFolderizeSettings):
(WebInspector.FolderizedTreeElement.prototype.updateParentStatus):
(WebInspector.FolderizedTreeElement.prototype._parentTreeElementForRepresentedObject):
(WebInspector.FolderizedTreeElement.prototype._settingsForRepresentedObject):
(WebInspector.FolderizedTreeElement.prototype._shouldGroupIntoFolders):
(WebInspector.FolderizedTreeElement):
Rework the logic for creating WebInspector.FolderTreeElement so that items for the
representedObject parameter may be passed in via registerFolderizeSettings.
* UserInterface/Views/FrameTreeElement.js:
(WebInspector.FrameTreeElement):
(WebInspector.FrameTreeElement.): Deleted.
(WebInspector.FrameTreeElement.makeChildCountCallback): Deleted.
Rework logic for calling registerFolderizeSettings to support the representedObject
parameter. Also changed calls to WebInspector.Frame to support the
WebInspector.Collection class.
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel.prototype.treeElementForRepresentedObject):
(WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
(WebInspector.ResourceSidebarPanel.prototype._scriptsCleared):
Create WebInspector.Collection instances of Script model objects for additional folders
created by the Resources sidebar:
- Anonymous Scripts
- Extension Scripts
- Extra Scripts
2016-11-02 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include DebuggerAgent in Workers - see, pause, and step through scripts
https://bugs.webkit.org/show_bug.cgi?id=164136
<rdar://problem/29028462>
Reviewed by Brian Burg.
By implementing DebuggerAgent, Workers will inform the frontend about
Scripts that evaluate in the Worker's VM and the Worker VM can pause
and send the pausing CallFrames to the frontend. This means that
WebInspector.Script and WebInspector.CallFrame will need to be made
target aware. This also means that each Target will have its own
set of debugger data, such as the list of scripts and pause data
like the pause reason / call frames. Previously all this data was
managed by DebuggerManager.
With this change we split that data out of DebuggerManager to be
per-target DebuggerData. DebuggerManager keeps `activeCallFrame`
but the list of scripts and pause data have moved into `DebuggerData`
which is per-target, accessed through DebuggerManager's new
dataForTarget(target) method.
Finally we make a few changes to the UserInterface to make Workers
and their scripts, appear grouped together. The Resources sidebar
previously had a single top level item for the Main Frame, which
has all its resources as its children (potentially grouped into
folders). With this change, each Worker gets its own top level
item as well, and the Worker's subresources (imported scripts)
become its children.
We also now associate a single mainResource with Targets. In the
case of Workers, we assume and assert that this is a Script. If
this were to ever change we would need to adjust the assumptions.
* UserInterface/Main.html:
* UserInterface/Test.html:
New files.
* UserInterface/Base/Main.js:
* UserInterface/Test/Test.js:
Add WebInspector.assumingMainTarget to fill in all the places where
we assume the main target right now, but would need to handle non-main
targets as other agents are implemented in workers. For example profile
data that assumes the main target right now could be worker targets
when we implement ScriptProfiler / Heap agents.
* UserInterface/Protocol/Connection.js:
(InspectorBackend.WorkerConnection):
* UserInterface/Protocol/Target.js:
(WebInspector.Target):
(WebInspector.Target.prototype.get DebuggerAgent):
(WebInspector.Target.prototype.get mainResource):
(WebInspector.Target.prototype.set mainResource):
(WebInspector.WorkerTarget.prototype.initialize):
(WebInspector.WorkerTarget):
Include DebuggerAgent in Targets.
Include a mainResource for Worker Targets.
* UserInterface/Protocol/DebuggerObserver.js:
(WebInspector.DebuggerObserver.prototype.scriptParsed):
(WebInspector.DebuggerObserver.prototype.breakpointResolved):
(WebInspector.DebuggerObserver.prototype.paused):
(WebInspector.DebuggerObserver.prototype.resumed):
Pass the target on to managers when necessary.
* UserInterface/Models/DebuggerData.js: Added.
(WebInspector.DebuggerData):
(WebInspector.DebuggerData.prototype.get target):
(WebInspector.DebuggerData.prototype.get callFrames):
(WebInspector.DebuggerData.prototype.get pauseReason):
(WebInspector.DebuggerData.prototype.get pauseData):
(WebInspector.DebuggerData.prototype.get scripts):
(WebInspector.DebuggerData.prototype.scriptForIdentifier):
(WebInspector.DebuggerData.prototype.scriptsForURL):
(WebInspector.DebuggerData.prototype.reset):
(WebInspector.DebuggerData.prototype.addScript):
(WebInspector.DebuggerData.prototype.pause):
(WebInspector.DebuggerData.prototype.unpause):
Extract per-target data from DebuggerManager. This includes the list
of scripts evaluated in a Target, and any pause data for this target
such as the pause reason and call frames.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.dataForTarget):
(WebInspector.DebuggerManager.prototype.get pauseReason): Deleted.
(WebInspector.DebuggerManager.prototype.get pauseData): Deleted.
(WebInspector.DebuggerManager.prototype.get callFrames): Deleted.
(WebInspector.DebuggerManager.prototype.reset):
New way to access per-target debugger data.
(WebInspector.DebuggerManager.prototype.initializeTarget):
When a new Target is created, synchronize frontend state with the target.
Things like the list of breakpoints and global breakpoint states.
(WebInspector.DebuggerManager.prototype.scriptForIdentifier):
(WebInspector.DebuggerManager.prototype.scriptsForURL):
Convenience accessors for scripts must now provide a Target.
(WebInspector.DebuggerManager.prototype.get knownNonResourceScripts):
This is a convenience accessors for a list of all scripts across all targets
so this handles getting the list across all targets.
(WebInspector.DebuggerManager.prototype.pause):
(WebInspector.DebuggerManager.prototype.resume):
(WebInspector.DebuggerManager.prototype.stepOver):
(WebInspector.DebuggerManager.prototype.stepInto):
(WebInspector.DebuggerManager.prototype.stepOut):
(WebInspector.DebuggerManager.prototype.continueToLocation):
Stepping commands affect the current target with the active call frame.
Eventually we will change Pause and Resume behavior to affect all targets.
(WebInspector.DebuggerManager.prototype.addBreakpoint):
(WebInspector.DebuggerManager.prototype.breakpointResolved):
(WebInspector.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):
(WebInspector.DebuggerManager.prototype._setBreakpoint):
(WebInspector.DebuggerManager.prototype._removeBreakpoint):
Breakpoints should be set on all targets, but we need a way
to set them on a specific target, when initializing an
individual target when we want to inform that single target
of all of the breakpoints.
(WebInspector.DebuggerManager.prototype._breakpointDisabledStateDidChange):
(WebInspector.DebuggerManager.prototype._updateBreakOnExceptionsState):
Changing global breakpoint state should inform all targets.
(WebInspector.DebuggerManager.prototype.scriptDidParse):
Associate Scripts with a Target. Identify the main resource of a
Worker Target and set it as soon as we can.
(WebInspector.DebuggerManager.prototype.debuggerDidPause):
(WebInspector.DebuggerManager.prototype.debuggerDidResume):
(WebInspector.DebuggerManager.prototype._sourceCodeLocationFromPayload):
(WebInspector.DebuggerManager.prototype._scopeChainFromPayload):
(WebInspector.DebuggerManager.prototype._scopeChainNodeFromPayload):
(WebInspector.DebuggerManager.prototype._mainResourceDidChange):
(WebInspector.DebuggerManager.prototype._didResumeInternal):
Pausing and resuming now happens per-target, so associate
created model objects (CallFrame, ScopeChain objects) and any
other necessary data with the target.
* UserInterface/Models/Breakpoint.js:
(WebInspector.Breakpoint):
(WebInspector.Breakpoint.prototype.get target):
(WebInspector.Breakpoint.prototype.get info):
* UserInterface/Models/CallFrame.js:
(WebInspector.CallFrame):
(WebInspector.CallFrame.prototype.get target):
(WebInspector.CallFrame.fromDebuggerPayload):
(WebInspector.CallFrame.fromPayload):
* UserInterface/Models/ConsoleMessage.js:
(WebInspector.ConsoleMessage):
* UserInterface/Models/Script.js:
(WebInspector.Script):
(WebInspector.Script.prototype.get target):
(WebInspector.Script.prototype.isMainResource):
(WebInspector.Script.prototype.requestContentFromBackend):
(WebInspector.Script.prototype._resolveResource):
* UserInterface/Models/StackTrace.js:
(WebInspector.StackTrace.fromPayload):
(WebInspector.StackTrace.fromString):
* UserInterface/Models/ProbeManager.js:
(WebInspector.ProbeManager.prototype.didSampleProbe):
* UserInterface/Models/Probe.js:
(WebInspector.ProbeSample):
* UserInterface/Views/ConsoleMessageView.js:
(WebInspector.ConsoleMessageView.prototype._appendLocationLink):
(WebInspector.ConsoleMessageView.prototype._formatParameterAsString):
Associate model objects with a specific target where necessary.
* UserInterface/Views/ObjectTreeBaseTreeElement.js:
(WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
* UserInterface/Controllers/RuntimeManager.js:
(WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
* UserInterface/Protocol/RemoteObject.js:
(WebInspector.RemoteObject.prototype.findFunctionSourceCodeLocation):
Use target specific DebuggerAgent where necessary.
* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
* UserInterface/Controllers/TimelineManager.js:
(WebInspector.TimelineManager.prototype._callFramesFromPayload):
* UserInterface/Models/ScriptTimelineRecord.js:
(WebInspector.ScriptTimelineRecord.prototype._initializeProfileFromPayload.profileNodeFromPayload):
* UserInterface/Views/EventListenerSectionGroup.js:
(WebInspector.EventListenerSectionGroup.prototype._functionTextOrLink):
(WebInspector.EventListenerSectionGroup):
* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
(WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode.node.shortestGCRootPath.):
(WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populateWindowPreview):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populatePreview):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPathRow):
* UserInterface/Views/ProfileDataGridNode.js:
(WebInspector.ProfileDataGridNode.prototype.iconClassName):
(WebInspector.ProfileDataGridNode.prototype.filterableDataForColumn):
(WebInspector.ProfileDataGridNode.prototype._displayContent):
Use assumed main target and audit these when the Worker gets more Agents.
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype._initiatorSourceCodeLocationFromPayload):
This will always be the main target because only the main target
has access to the DOM.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.get target):
(WebInspector.SourceCodeTextEditor.prototype.customPerformSearch):
(WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
(WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression.populate):
(WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression):
(WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction.didGetDetails):
(WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction):
Update target specific actions to use the proper target's agents.
* UserInterface/Views/TargetTreeElement.js: Added.
(WebInspector.TargetTreeElement):
(WebInspector.TargetTreeElement.prototype.get target):
(WebInspector.TargetTreeElement.prototype.onexpand):
(WebInspector.TargetTreeElement.prototype.oncollapse):
Add a new tree element for a Target. We currently assume that the
main resource for a Target will be a Script right now, as is the
case for Web Workers. This simply remembers its expanded or
collapsed state and has a better icon.
* UserInterface/Views/ResourceIcons.css:
(body:matches(.mac-platform, .windows-platform) .script.worker-icon .icon):
(body:matches(.mac-platform, .windows-platform) .large .script.worker-icon .icon):
* UserInterface/Images/WorkerScript.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocument.png.
* UserInterface/Images/WorkerScript@2x.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocument@2x.png.
* UserInterface/Images/WorkerScriptLarge.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge.png.
* UserInterface/Images/WorkerScriptLarge@2x.png: Renamed from Source/WebInspectorUI/UserInterface/Images/WorkerDocumentLarge@2x.png.
Improve icon for a Worker's main resource script.
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel):
(WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
(WebInspector.ResourceSidebarPanel.prototype._scriptsCleared):
(WebInspector.ResourceSidebarPanel.prototype._addScriptForNonMainTarget):
(WebInspector.ResourceSidebarPanel.prototype._addTargetWithMainResource):
(WebInspector.ResourceSidebarPanel.prototype._targetRemoved):
* UserInterface/Views/SearchSidebarPanel.js:
(WebInspector.SearchSidebarPanel.prototype.performSearch.searchScripts):
(WebInspector.SearchSidebarPanel.prototype._searchTreeElementForScript):
* UserInterface/Views/OpenResourceDialog.js:
(WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline.createTreeElement):
(WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline):
(WebInspector.OpenResourceDialog.prototype.didDismissDialog):
(WebInspector.OpenResourceDialog.prototype.didPresentDialog):
(WebInspector.OpenResourceDialog.prototype._addResourcesForFrame):
(WebInspector.OpenResourceDialog.prototype._addScriptsForTarget):
(WebInspector.OpenResourceDialog.prototype._scriptAdded):
(WebInspector.OpenResourceDialog):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToTreeOutline):
(WebInspector.DebuggerSidebarPanel.prototype._debuggerCallFramesDidChange):
(WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
(WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
Include scripts from non-main targets in sidebars.
2016-11-01 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Creating a new pseudo-selector in the Styles sidebar doesn't work on first attempt
https://bugs.webkit.org/show_bug.cgi?id=164092
Reviewed by Timothy Hatcher.
* UserInterface/Views/CSSStyleDeclarationSection.css:
(.style-declaration-section:not(.invalid-selector).rule-disabled > .header > .icon):
(.style-declaration-section.invalid-selector > .header > .icon):
(.style-declaration-section.invalid-selector > .header > .selector,):
(.style-declaration-section.rule-disabled > .header > .icon): Deleted.
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WebInspector.CSSStyleDeclarationSection):
(WebInspector.CSSStyleDeclarationSection.prototype.refresh):
(WebInspector.CSSStyleDeclarationSection.prototype._handleIconElementClicked):
(WebInspector.CSSStyleDeclarationSection.prototype._updateSelectorIcon): Added.
Re-add logic removed by https://webkit.org/b/159734 for handling invalid selectors. Instead
of just refreshing the section whenever the represented CSSRule changes selectors, we only
need to refresh if the selector no longer applies to the current element.
(WebInspector.CSSStyleDeclarationSection.prototype._handleMouseMove): Added.
Fix another issue discovered while adding the invalid selector warnings, where the title
attribute of each individual selector was no longer visible. To fix this, whenever the user
moves their mouse over the selector input, the position is compared to each selector to find
the first one that matches, whose title is then applied to the input element.
2016-11-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Improve debugger highlight in some exception cases
https://bugs.webkit.org/show_bug.cgi?id=164300
Reviewed by Matt Baker.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
When walking up AST nodes and reach a throw statement, use that.
2016-11-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Cleanup stale code in NetworkSidebarPanel
https://bugs.webkit.org/show_bug.cgi?id=164295
Reviewed by Matt Baker.
* UserInterface/Views/NetworkSidebarPanel.js:
(WebInspector.NetworkSidebarPanel.prototype.closed): Deleted.
This doesn't appear to be needed since NetworkSidebarPanel never
registered any event listeners.
2016-11-01 Devin Rousso <dcrousso+webkit@gmail.com>
REGRESSION (r191419): Web Inspector: Autocomplete is broken
https://bugs.webkit.org/show_bug.cgi?id=150493
Reviewed by Timothy Hatcher.
Fixed CodeMirror.undo() logic rolled out by r191539 <https://webkit.org/b/150537>
Added calls to CodeMirror.changeGeneration(true) which tells the history stack to "close"
the current event, preventing it from being consolidated with new changes. If the user
typed fast enough, non-completion changes (like adding ":" in CSS) would get merged with
completion changes, causing calls to CodeMirror.undo() to undo those changes as well. To
prevent this, a boolean variable is set to true whenever a completion "activity" is in
progress, defined by a sequence of completion related events. When this "activity" first
starts, call CodeMirror.changeGeneration(true) to freeze the current history.
See original bug for more information <https://webkit.org/b/147720>.
* UserInterface/Controllers/CodeMirrorCompletionController.js:
(WebInspector.CodeMirrorCompletionController):
(WebInspector.CodeMirrorCompletionController.prototype.updateCompletions):
(WebInspector.CodeMirrorCompletionController.prototype.isCompletionChange):
(WebInspector.CodeMirrorCompletionController.prototype.hideCompletions):
(WebInspector.CodeMirrorCompletionController.prototype.close):
(WebInspector.CodeMirrorCompletionController.prototype.completionSuggestionsSelectedCompletion):
(WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint.update):
(WebInspector.CodeMirrorCompletionController.prototype._applyCompletionHint):
(WebInspector.CodeMirrorCompletionController.prototype._commitCompletionHint.update):
(WebInspector.CodeMirrorCompletionController.prototype._commitCompletionHint):
(WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.update):
(WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint):
(WebInspector.CodeMirrorCompletionController.prototype._completeAtCurrentPosition):
(WebInspector.CodeMirrorCompletionController.prototype._handleBeforeChange):
(WebInspector.CodeMirrorCompletionController.prototype._createCompletionHintMarker): Deleted.
(WebInspector.CodeMirrorCompletionController.prototype._removeLastChangeFromHistory): Deleted.
(WebInspector.CodeMirrorCompletionController.prototype._removeCompletionHint.clearMarker): Deleted.
2016-11-01 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Replace sublists inside DOM-related model objects with WI.Collection
https://bugs.webkit.org/show_bug.cgi?id=164098
Reviewed by Timothy Hatcher.
* UserInterface/Models/DOMTree.js:
* UserInterface/Models/Frame.js:
Add support for WebInspector.Collection.
* UserInterface/Models/Script.js:
(WebInspector.Script):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._addResourcesRecursivelyForFrame):
* UserInterface/Views/FrameTreeElement.js:
(WebInspector.FrameTreeElement):
(WebInspector.FrameTreeElement.prototype.onpopulate):
* UserInterface/Views/OpenResourceDialog.js:
(WebInspector.OpenResourceDialog.prototype._addResourcesForFrame):
Use new functions defined by changing to WebInspector.Collection.
2016-11-01 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Fix double remove of ResourceCollection if type changes
https://bugs.webkit.org/show_bug.cgi?id=164268
Reviewed by Joseph Pecoraro.
* UserInterface/Models/ResourceCollection.js:
(WebInspector.ResourceCollection.prototype._resourceTypeDidChange):
Change logic so that a non-typed collection will not try to remove a resource that has
changed types from the sub-collection of its old type, since the sub-collection itself will
handle the removal inside its own event listener for the type change.
2016-11-01 Ryosuke Niwa <rniwa@webkit.org>
Web Inspector: Add the support for custom elements
https://bugs.webkit.org/show_bug.cgi?id=164266
<rdar://problem/29038883>
Reviewed by Joseph Pecoraro.
Show the custom element state in DOM node's details pane:
- "Element" for all builtin elements.
- "Element (Custom)" for any upgraded custom elements.
- "Element (Waiting to be upgraded)" for any element waiting to be upgraded.
- "Element (Failed to upgrade)" for any custom element that failed during construction or an upgrade.
And add "Jump to Definition" to the context menu of an node to find the custom element's definition.
* Localizations/en.lproj/localizedStrings.js: Added localized strings.
* UserInterface/Controllers/DOMTreeManager.js:
(WebInspector.DOMTreeManager.prototype._customElementStateChanged): Added. Update the state and fire
WebInspector.DOMTreeManager.Event.CustomElementStateChanged to update the node's details pane.
* UserInterface/Models/DOMNode.js:
(WebInspector.DOMNode): Set the custom element state or default to "builtin". Use null when the node
is not an element.
(WebInspector.DOMNode.prototype.isCustomElement): Added. Returns true if this is a successfully
constructed or upgraded custom element.
(WebInspector.DOMNode.prototype.customElementState): Added.
(WebInspector.DOMNode.CustomElementState): Added.
* UserInterface/Protocol/DOMObserver.js:
(WebInspector.DOMObserver.prototype.customElementStateChanged): Added.
* UserInterface/Protocol/RemoteObject.js:
(WebInspector.RemoteObject.prototype.getProperty): Added. Retrieves the property of a given name from
the remote backend.
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel): Call _customElementStateChanged when the custom element
state changes by listening to WebInspector.DOMTreeManager.Event.CustomElementStateChanged.
(WebInspector.DOMNodeDetailsSidebarPanel.prototype.layout):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshIdentity): Extracted from layout.
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._customElementStateChanged): Added.
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._nodeTypeDisplayName): Include the custom element
state when it's not a builtin element (_customElementState returns null in that case).
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._customElementState): Get the localized string for
each custom element state.
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._populateNodeContextMenu): Add "Jump to Definition" item in the
context menu of an element when it's a successfully constructed or upgraded custom element.
2016-10-31 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Shadow DOM scoped styles are missing
https://bugs.webkit.org/show_bug.cgi?id=164247
<rdar://problem/29035061>
Reviewed by Antti Koivisto.
* UserInterface/Models/DOMNodeStyles.js:
(WebInspector.DOMNodeStyles.prototype.refresh.fetchedInlineStyles):
Fix incorrect WrapperPromise usage.
2016-10-31 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Arrows for Styles scope bar item are misaligned
https://bugs.webkit.org/show_bug.cgi?id=164159
Reviewed by Timothy Hatcher.
* UserInterface/Views/ScopeRadioButtonNavigationItem.css:
(.scope-radio-button-navigation-item > .scope-radio-button-item-select:focus):
(.scope-radio-button-navigation-item > .arrows):
2016-10-31 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Entering ":n" in Open Resource Dialog, where n > number of lines, should jump to the last line
https://bugs.webkit.org/show_bug.cgi?id=160840
Reviewed by Timothy Hatcher.
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype.revealPosition):
Since it is possible for the given position to be outside the bounds of the CodeMirror
instance, wait to get the line handler for the highlight animation until we have constrained
the position value.
2016-10-28 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Preferences for Text Editor behavior
https://bugs.webkit.org/show_bug.cgi?id=149120
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WebInspector.loaded):
(WebInspector.contentLoaded):
(WebInspector.contentLoaded.setTabSize):
(WebInspector.contentLoaded.setInvalidCharacterClassName):
(WebInspector.contentLoaded.setWhitespaceCharacterClassName):
(WebInspector._tryToRestorePendingTabs):
(WebInspector.indentString):
(WebInspector._updateNewTabButtonState): Deleted.
(WebInspector._newTabItemClicked): Deleted.
Removed calls to the New Tab tab bar item on the Tab Bar instance.
Added listener to the indentUnit setting to change the tab-size value on <body>.
Created helper function to generate the indentString value from settings.
* UserInterface/Base/Test.js:
(WebInspector.indentString):
Assume indent string is " " for tests.
* UserInterface/Base/Setting.js:
Added global WebInspector.settings dictionary for holding settings with UI editors.
* UserInterface/Main.html:
Added GeneralTabBarItem, PinnedTabBarItem, and SettingsTabContentView.
* UserInterface/Models/CSSStyleDeclaration.js:
(WebInspector.CSSStyleDeclaration.prototype.generateCSSRuleString):
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype._formattedContentFromEditor):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._resetContent.update):
* UserInterface/Views/VisualStylePropertyEditor.js:
(WebInspector.VisualStylePropertyEditor.generateFormattedTextForNewProperty):
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction.didGetDetails):
Now uses WebInspector.indentUnit for indentation values
* UserInterface/Views/CodeMirrorAdditions.js:
Added "showWhitespaceCharacter" option to CodeMirror. When enabled, it adds an overlay to
the editor that will use pseudo-elements to display whitespace characters (unicode 00B7).
* UserInterface/Views/CodeMirrorOverrides.css:
(.CodeMirror .cm-tab):
(.show-whitespace-characters .CodeMirror .cm-tab::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-1::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-2::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-3::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-4::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-5::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-6::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-7::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-8::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-9::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-10::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-11::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-12::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-13::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-14::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-15::before):
(.show-whitespace-characters .CodeMirror .cm-whitespace-16::before):
(.show-invalid-characters .CodeMirror .cm-invalidchar):
(.CodeMirror .cm-invalidchar): Deleted.
Use unicode character 00B7 (middle dot) to display a space. Also uses a grey border for
visualizing tab characters.
* UserInterface/Views/ApplicationCacheFrameContentView.js:
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
* UserInterface/Views/ClusterContentView.js:
* UserInterface/Views/DOMTreeContentView.js:
* UserInterface/Views/DatabaseContentView.js:
* UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
* UserInterface/Views/NetworkGridContentView.js:
* UserInterface/Views/ResourceContentView.js:
* UserInterface/Views/ScriptContentView.js:
* UserInterface/Views/TabContentView.js:
* UserInterface/Views/TimelineRecordingContentView.js:
Add calls to super.shown(), super.hidden(), and super.closed().
* UserInterface/Views/ConsoleTabContentView.js:
* UserInterface/Views/DebuggerTabContentView.js:
* UserInterface/Views/ElementsTabContentView.js:
* UserInterface/Views/NetworkTabContentView.js:
* UserInterface/Views/NewTabContentView.js:
* UserInterface/Views/ResourcesTabContentView.js:
* UserInterface/Views/SearchTabContentView.js:
* UserInterface/Views/StorageTabContentView.js:
* UserInterface/Views/TimelineTabContentView.js:
Now uses WebInspector.GeneralTabBarItem.
* UserInterface/Views/GeneralTabBarItem.js: Added.
(WebInspector.GeneralTabBarItem):
(WebInspector.GeneralTabBarItem.prototype.set title):
(WebInspector.GeneralTabBarItem.prototype._handleContextMenuEvent):
Split from TabBarItem.js to make pinned tab bar items more distinct.
* UserInterface/Views/Main.css:
(body):
Removed tab-size.
* UserInterface/Views/PinnedTabBarItem.js: Added.
(WebInspector.PinnedTabBarItem):
Split from TabBarItem.js to make pinned tab bar items more distinct.
* UserInterface/Views/SettingsTabContentView.css: Added.
(.content-view.settings):
(.content-view.settings > .header):
(.content-view.settings > .setting-container):
(.content-view.settings > .setting-container > .setting-name):
(.content-view.settings > .setting-container > .setting-value-controller):
(.content-view.settings > .setting-container > .setting-value-controller input[type="number"]):
* UserInterface/Views/SettingsTabContentView.js:
(WebInspector.SettingsTabContentView):
(WebInspector.SettingsTabContentView.tabInfo):
(WebInspector.SettingsTabContentView.isEphemeral):
(WebInspector.SettingsTabContentView.shouldSaveTab):
(WebInspector.SettingsTabContentView.prototype.initialLayout):
(WebInspector.SettingsTabContentView.isTabAllowed): Deleted.
(WebInspector.SettingsTabContentView.prototype.get type): Deleted.
Added logic to display an appropriate editor for each item in WebInspector.settings.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.close):
Add call to super.close().
* UserInterface/Views/TabBar.css:
(.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover):
(.tab-bar > .item:not(.pinned) > .flex-space:last-child):
(.tab-bar > .item.pinned > .icon):
(.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover > .icon):
(.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover,): Deleted.
(.tab-bar > .item > .flex-space:last-child): Deleted.
(.tab-bar > .item.new-tab-button > .icon): Deleted.
(.tab-bar:not(.animating) > .item:not(.selected, .disabled):hover > .icon,): Deleted.
Removed rules specifically targeting `.new-tab-button`.
* UserInterface/Views/TabBar.js:
(WebInspector.TabBar):
(WebInspector.TabBar.prototype.get newTabTabBarItem):
(WebInspector.TabBar.prototype.updateNewTabTabBarItemState):
(WebInspector.TabBar.prototype.insertTabBarItem):
(WebInspector.TabBar.prototype.removeTabBarItem.animateTabs):
(WebInspector.TabBar.prototype.removeTabBarItem):
(WebInspector.TabBar.prototype.selectPreviousTab):
(WebInspector.TabBar.prototype.selectNextTab):
(WebInspector.TabBar.prototype.set selectedTabBarItem):
(WebInspector.TabBar.prototype.hasNormalTab):
(WebInspector.TabBar.prototype.layout):
(WebInspector.TabBar.prototype._hasMoreThanOneNormalTab):
(WebInspector.TabBar.prototype._handleMouseDown):
(WebInspector.TabBar.prototype._handleMouseMoved):
(WebInspector.TabBar.prototype._handleMouseLeave):
(WebInspector.TabBar.prototype._handleNewTabClick):
(WebInspector.TabBar.prototype._handleNewTabMouseEnter):
(WebInspector.TabBar.prototype.get newTabItem): Deleted.
(WebInspector.TabBar.prototype.set newTabItem): Deleted.
Replaced the newTabItem setter by adding a saved pinned tab bar item (instead of relying
upon a different object to give it the pinned tab bar item) that changes modes depending on
whether a new tab is able to be created.
* UserInterface/Views/TabBarItem.js:
(WebInspector.TabBarItem):
(WebInspector.TabBarItem.prototype.get element):
(WebInspector.TabBarItem.prototype.get representedObject):
(WebInspector.TabBarItem.prototype.set representedObject):
(WebInspector.TabBarItem.prototype.get parentTabBar):
(WebInspector.TabBarItem.prototype.set parentTabBar):
(WebInspector.TabBarItem.prototype.get image):
(WebInspector.TabBarItem.prototype.set image):
(WebInspector.TabBarItem.prototype.get title):
(WebInspector.TabBarItem.prototype.set title):
(WebInspector.TabBarItem.prototype.get pinned): Deleted.
(WebInspector.TabBarItem.prototype._handleContextMenuEvent): Deleted.
Split into GeneralTabBarItem and PinnedTabBarItem to simplify the logic of the DOM and allow
for easier checking of whether a tab bar item is pinned or not.
* UserInterface/Views/TabBrowser.js:
(WebInspector.TabBrowser):
(WebInspector.TabBrowser.prototype.addTabForContentView):
(WebInspector.TabBrowser.prototype.closeTabForContentView):
(WebInspector.TabBrowser.prototype._tabBarItemSelected):
(WebInspector.TabBrowser.prototype._tabBarItemRemoved):
Replaced references to newTabItem with a set number (since each TabBar has a specific number
of pinned tabs).
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor):
(WebInspector.TextEditor.prototype.close):.
Remove settings update event listeners to allow garbage collection.
(WebInspector.TextEditor.prototype._startWorkerPrettyPrint):
(WebInspector.TextEditor.prototype._startCodeMirrorPrettyPrint):
Now uses the settings values in WebInspector.setting for settings on the CodeMirror
instance. Also updates the CodeMirror instance if any setting changes.
2016-10-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include parameter strings for native CustomElementRegistry methods in the console
https://bugs.webkit.org/show_bug.cgi?id=164147
Reviewed by Brian Burg.
* UserInterface/Models/NativeFunctionParameters.js:
2016-10-28 Matt Baker <mattbaker@apple.com>
Unreviewed, worker document images added
* UserInterface/Images/WorkerDocument.png: Added.
* UserInterface/Images/WorkerDocument@2x.png: Added.
* UserInterface/Images/WorkerDocumentLarge.png: Added.
* UserInterface/Images/WorkerDocumentLarge@2x.png: Added.
2016-10-27 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Create general model object Collection class
https://bugs.webkit.org/show_bug.cgi?id=163995
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Collection.js: Added.
(WebInspector.Collection):
(WebInspector.Collection.prototype.get items):
(WebInspector.Collection.prototype.get typeVerifier):
(WebInspector.Collection.prototype.add):
(WebInspector.Collection.prototype.remove):
(WebInspector.Collection.prototype.clear):
(WebInspector.Collection.prototype.toArray):
(WebInspector.Collection.prototype.toJSON):
(WebInspector.Collection.prototype.itemAdded):
(WebInspector.Collection.prototype.itemRemoved):
(WebInspector.Collection.prototype.itemsCleared):
Class that holds multiple model objects. It can be limited to a specific type by supplying
a "typeVerifier", which is a function that accepts a single argument (the model object) and
returns true/false depending on if that argument matches the "type" of the collection.
* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Models/Frame.js:
* UserInterface/Views/CookieStorageContentView.js:
* UserInterface/Views/DebuggerSidebarPanel.js:
* UserInterface/Views/FrameTreeElement.js:
* UserInterface/Views/OpenResourceDialog.js:
Add support for WebInspector.Collection.
* UserInterface/Models/ResourceCollection.js:
(WebInspector.ResourceCollection):
(WebInspector.ResourceCollection.verifierForType):
(WebInspector.ResourceCollection.prototype.resourceCollectionForType):
(WebInspector.ResourceCollection.prototype.clear):
(WebInspector.ResourceCollection.prototype.itemAdded):
(WebInspector.ResourceCollection.prototype.itemRemoved):
(WebInspector.ResourceCollection.prototype.itemsCleared):
(WebInspector.ResourceCollection.prototype._associateWithResource):
(WebInspector.ResourceCollection.prototype._disassociateWithResource):
(WebInspector.ResourceCollection.prototype._resourceURLDidChange):
(WebInspector.ResourceCollection.prototype._resourceTypeDidChange):
(WebInspector.ResourceCollection.prototype.get resources): Deleted.
(WebInspector.ResourceCollection.prototype.resourcesWithType): Deleted.
(WebInspector.ResourceCollection.prototype.addResource): Deleted.
(WebInspector.ResourceCollection.prototype.removeResource): Deleted.
(WebInspector.ResourceCollection.prototype.removeAllResources): Deleted.
Now a subclass of WebInspector.Collection. Retrieving WebInspector.Resource objects by type
and URL is still supported, but requesting by type now returns another instance of
WebInspector.ResourceCollection that is configured to only accept the requested type.
2016-10-27 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include ConsoleAgent in Workers - real console.log support
https://bugs.webkit.org/show_bug.cgi?id=163844
<rdar://problem/28903328>
Reviewed by Brian Burg.
* UserInterface/Protocol/Target.js:
(WebInspector.Target.prototype.get ConsoleAgent):
(WebInspector.Target.prototype._initializeNonMainTarget):
* UserInterface/Protocol/Connection.js:
(InspectorBackend.WorkerConnection):
Add ConsoleAgent.
* UserInterface/Controllers/LogManager.js:
(WebInspector.LogManager.prototype.messageWasAdded):
(WebInspector.LogManager.prototype.requestClearMessages):
Handle ConsoleAgent calls with multiple targets.
* UserInterface/Protocol/ConsoleObserver.js:
(WebInspector.ConsoleObserver.prototype.messageAdded):
Dispatch with the target in case we create Model objects.
* UserInterface/Controllers/WorkerManager.js:
(WebInspector.WorkerManager.prototype.workerCreated):
The frontend must now call "initialized" on Workers after
sending our setup messages (enable, set breakpoints, etc).
* UserInterface/Protocol/RemoteObject.js:
(WebInspector.RemoteObject.prototype.get target):
Expose an accessor for tests.
* UserInterface/Protocol/LoggingProtocolTracer.js:
(WebInspector.LoggingProtocolTracer.prototype._processEntry):
Actually output the Exception, useful when debugging failures in tests.
2016-10-27 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include RuntimeAgent in Workers - evaluate in Worker context
https://bugs.webkit.org/show_bug.cgi?id=163835
<rdar://problem/28901465>
Reviewed by Brian Burg.
This introduces the idea that the frontend may communication with multiple
backend "Targets" which each have their own set of Agents.
- WebInspector.Target
- has its own list of Agents
- has a InspectorBackend.Connection to communicate with the backend
- WebInspector.mainTarget
- always exists and represents the thing we are debugging (Page or JSContext)
- WebInspector.targets / WebInspector.targetManager
- management of all Targets
- create new Targets for Workers
This also slowly introduces the concept that Model objects may be tied to
a specific Target:
- WebInspector.RemoteObject
- in order to evaluate JS and interact with this object we must know the target (Page or Worker)
- when fetching PropertyDescriptors and other RemoteObjects we must continue to pass on the target
Finally this makes the QuickConsole list Worker execution contexts in
the context picker so that users can choose a Worker context and
evaluate JavaScript in that context using the console.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Base/Main.js:
(WebInspector.loaded):
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WebInspector.loaded):
New files, strings, and managers.
New global WebInspector.mainTarget.
New convenience WebInspector.targets.
* UserInterface/Protocol/Target.js: Added.
(WebInspector.Target):
(WebInspector.Target.prototype.get RuntimeAgent):
(WebInspector.Target.prototype.get name):
(WebInspector.Target.prototype.get type):
(WebInspector.Target.prototype.get connection):
(WebInspector.Target.prototype.get executionContext):
(WebInspector.Target.prototype.get displayName):
(WebInspector.Target.prototype._intializeMainTarget):
(WebInspector.Target.prototype._initializeNonMainTarget):
Target has some basic properties.
* UserInterface/Controllers/TargetManager.js:
(WebInspector.TargetManager):
(WebInspector.TargetManager.prototype.get targets):
(WebInspector.TargetManager.prototype.addTarget):
(WebInspector.TargetManager.prototype.removeTarget):
Holds the list of Targets and events when created / removed.
Each target with a RuntimeAgent has an ExecutionContext.
* UserInterface/Controllers/WorkerManager.js:
(WebInspector.WorkerManager):
(WebInspector.WorkerManager.prototype.workerCreated):
(WebInspector.WorkerManager.prototype.workerTerminated):
(WebInspector.WorkerManager.prototype.dispatchMessageFromWorker):
Create / remove / dispatch on a Worker Target.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass):
(InspectorBackendClass.prototype.registerCommand):
(InspectorBackendClass.prototype.dispatch):
(InspectorBackendClass.prototype.runAfterPendingDispatches):
(InspectorBackendClass.prototype._agentForDomain):
Keep the original implementations and just dispatch to the main connection.
(InspectorBackend.Agent):
(InspectorBackend.Agent.prototype.get connection):
(InspectorBackend.Agent.prototype.set connection):
(InspectorBackend.Agent.prototype.get dispatcher):
We will share Agent implementations but just give new "copies" a different
connection and dispatcher.
(InspectorBackend.Command):
(InspectorBackend.Command.create):
(InspectorBackend.Command.prototype.invoke):
(InspectorBackend.Command.prototype.supports):
We continue to have a single Command instance on the Agent. However instead
of using the hardcoded Agent on the Instance when evaluated as a function
it uses the `this` object which should be an agent. This way:
target1.RuntimeAgent.evaluate
- `this` is target1 and we use the connection for that target
target2.RuntimeAgent.evaluate
- `this` is target2 and we use the connection for that target
Unfortunately this breaks `RuntimeAgent.evaluate.invoke`. Currently this
is solved by providing an extra parameter. In the case where we need to
invoke on a particular agent we must provide the agent.
target.RuntimeAgent.evaluate.invoke({options}, target.RuntimeAgent)
This is unfortunate but only needed in a handful of places right now.
(InspectorBackendClass.prototype._sendCommandToBackendWithCallback): Deleted.
(InspectorBackendClass.prototype._sendCommandToBackendExpectingPromise): Deleted.
(InspectorBackendClass.prototype._sendMessageToBackend): Deleted.
(InspectorBackendClass.prototype._dispatchResponse): Deleted.
(InspectorBackendClass.prototype._dispatchResponseToCallback): Deleted.
(InspectorBackendClass.prototype._dispatchResponseToPromise): Deleted.
(InspectorBackendClass.prototype._dispatchEvent): Deleted.
(InspectorBackendClass.prototype._flushPendingScripts): Deleted.
(InspectorBackend.Agent.prototype.get currentDispatchState): Deleted.
(InspectorBackend.Command.prototype.deliverFailure): Deleted.
* UserInterface/Protocol/Connection.js: Added.
(InspectorBackend.Connection):
(InspectorBackend.Connection.prototype.get target):
(InspectorBackend.Connection.prototype.set target):
(InspectorBackend.Connection.prototype.dispatch):
(InspectorBackend.Connection.prototype.runAfterPendingDispatches):
(InspectorBackend.Connection.prototype.sendMessageToBackend):
(InspectorBackend.Connection.prototype._dispatchResponse):
(InspectorBackend.Connection.prototype._dispatchResponseToCallback):
(InspectorBackend.Connection.prototype._dispatchResponseToPromise):
(InspectorBackend.Connection.prototype._dispatchEvent):
(InspectorBackend.Connection.prototype._sendCommandToBackendWithCallback):
(InspectorBackend.Connection.prototype._sendCommandToBackendExpectingPromise):
(InspectorBackend.Connection.prototype._sendMessageToBackend):
(InspectorBackend.Connection.prototype._flushPendingScripts):
This extracts the Connection details into its own class.
Although we make it appear as though a Target has a list of
Agents, we actually have the Connection hold the list of Agents.
Instead of cloning the entire Agent we just create a new object
extended from the original Agent instance. This allows us to keep
the same interface but just change the connection / dispatcher
properties within the Agent.
(InspectorBackend.MainConnection):
(InspectorBackend.MainConnection.prototype.sendMessageToBackend):
(InspectorBackend.WorkerConnection):
(InspectorBackend.WorkerConnection.sendMessageToBackend):
Two different kinds of connections. One for the Main connection
and one for Workers. Currently the list of agents we expose
on a Worker Target/Connection is hardcoded.
* UserInterface/Models/ExecutionContext.js:
(WebInspector.ExecutionContext):
(WebInspector.ExecutionContext.prototype.get target):
We may now have ExecutionContexts that mean a Page, Frames, and Workers.
To do this we include the (target, executionContextId) tuple in this object.
With this we have everything we need to evaluate JavaScript.
* UserInterface/Controllers/RuntimeManager.js:
(WebInspector.RuntimeManager):
(WebInspector.RuntimeManager.prototype.get activeExecutionContext):
(WebInspector.RuntimeManager.prototype.set activeExecutionContext):
(WebInspector.RuntimeManager.prototype.get defaultExecutionContextIdentifier): Deleted.
(WebInspector.RuntimeManager.prototype.set defaultExecutionContextIdentifier): Deleted.
Update from contextId to a full ExecutionContext object.
(WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow.evalCallback):
(WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
(WebInspector.RuntimeManager.prototype.saveResult):
(WebInspector.RuntimeManager.prototype.getPropertiesForRemoteObject):
(WebInspector.RuntimeManager.prototype._frameExecutionContextsCleared):
* UserInterface/Controllers/FrameResourceManager.js:
(WebInspector.FrameResourceManager.prototype.executionContextCreated):
* UserInterface/Controllers/JavaScriptLogViewController.js:
(WebInspector.JavaScriptLogViewController.prototype.consolePromptShouldCommitText):
* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
Anywhere that wants to use the "activeExecutionContext" must use the
specific RuntimeAgent tied to that ExecutionContext's Target.
* UserInterface/Models/PropertyDescriptor.js:
(WebInspector.PropertyDescriptor.fromPayload):
* UserInterface/Protocol/RemoteObject.js:
(WebInspector.RemoteObject):
(WebInspector.RemoteObject.createFakeRemoteObject):
(WebInspector.RemoteObject.fromPrimitiveValue):
(WebInspector.RemoteObject.fromPayload):
(WebInspector.RemoteObject.prototype.getDisplayablePropertyDescriptors):
(WebInspector.RemoteObject.prototype.deprecatedGetDisplayableProperties):
(WebInspector.RemoteObject.prototype.setPropertyValue):
(WebInspector.RemoteObject.prototype.getCollectionEntries):
(WebInspector.RemoteObject.prototype.releaseWeakCollectionEntries):
(WebInspector.RemoteObject.prototype.callFunction):
(WebInspector.RemoteObject.prototype.callFunctionJSON):
(WebInspector.RemoteObject.prototype.getOwnPropertyDescriptor.wrappedCallback):
(WebInspector.RemoteObject.prototype.getOwnPropertyDescriptor):
(WebInspector.RemoteObject.prototype.release):
(WebInspector.RemoteObject.prototype._getPropertyDescriptors):
(WebInspector.RemoteObject.prototype._getPropertyDescriptorsResolver):
(WebInspector.RemoteObject.prototype._deprecatedGetProperties):
RemoteObject and related Model Objects now must be tied to a specific
Target, because we need to know which Target it belongs to in order to
interact with it further.
* UserInterface/Views/QuickConsole.js:
(WebInspector.QuickConsole):
(WebInspector.QuickConsole.prototype.get selectedExecutionContext):
(WebInspector.QuickConsole.prototype.set selectedExecutionContext):
(WebInspector.QuickConsole.prototype._executionContextPathComponentsToDisplay):
(WebInspector.QuickConsole.prototype._rebuildExecutionContextPathComponents):
(WebInspector.QuickConsole.prototype._framePageExecutionContextsChanged):
(WebInspector.QuickConsole.prototype._frameExecutionContextsCleared):
(WebInspector.QuickConsole.prototype._createExecutionContextPathComponent):
(WebInspector.QuickConsole.prototype._createExecutionContextPathComponentFromFrame):
(WebInspector.QuickConsole.prototype._compareExecutionContextPathComponents):
(WebInspector.QuickConsole.prototype._insertOtherExecutionContextPathComponent):
(WebInspector.QuickConsole.prototype._removeOtherExecutionContextPathComponent):
(WebInspector.QuickConsole.prototype._insertExecutionContextPathComponentForFrame):
(WebInspector.QuickConsole.prototype._removeExecutionContextPathComponentForFrame):
(WebInspector.QuickConsole.prototype._targetAdded):
(WebInspector.QuickConsole.prototype._targetRemoved):
(WebInspector.QuickConsole.prototype._pathComponentSelected):
(WebInspector.QuickConsole.prototype.get selectedExecutionContextIdentifier): Deleted.
(WebInspector.QuickConsole.prototype.set selectedExecutionContextIdentifier): Deleted.
(WebInspector.QuickConsole.prototype._defaultExecutionContextChanged): Deleted.
Update the code from executionContextId to ExecutionContext objects.
Update the picker with ExecutionContextPathComponent for Workers (new Targets).
Generalize and cleanup the code to make it easier to follow.
2016-10-27 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Introduce Page WorkerAgent and Worker InspectorController
https://bugs.webkit.org/show_bug.cgi?id=163817
<rdar://problem/28899063>
Reviewed by Brian Burg.
* UserInterface/Main.html:
* UserInterface/Test.html:
New files.
* UserInterface/Base/Main.js:
(WebInspector.loaded):
* UserInterface/Test/Test.js:
(WebInspector.loaded):
New Observers and Managers.
* UserInterface/Protocol/WorkerObserver.js: Added.
(WebInspector.WorkerObserver.prototype.workerCreated):
(WebInspector.WorkerObserver.prototype.workerTerminated):
(WebInspector.WorkerObserver.prototype.dispatchMessageFromWorker):
(WebInspector.WorkerObserver):
* UserInterface/Controllers/WorkerManager.js: Added.
(WebInspector.WorkerManager):
(WebInspector.WorkerManager.prototype.workerCreated):
(WebInspector.WorkerManager.prototype.workerTerminated):
(WebInspector.WorkerManager.prototype.dispatchMessageFromWorker):
To be implemented with the first Worker agent implementation
when there is actually something we can do with the Worker.
2016-10-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Cmd-+ doesn't "zoom in" to increase text size in the Web Inspector
https://bugs.webkit.org/show_bug.cgi?id=163961
<rdar://problem/28895308>
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
Add a duplicate set of keyboard shortcuts for the Shift variants.
2016-10-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove dead code in FrameTreeElement
https://bugs.webkit.org/show_bug.cgi?id=163914
Reviewed by Brian Burg.
* UserInterface/Views/FrameTreeElement.js:
2016-10-24 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Scope chain shouldn't show empty Closure sections
https://bugs.webkit.org/show_bug.cgi?id=152348
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype._scopeChainNodeFromPayload):
* UserInterface/Models/ScopeChainNode.js:
(WebInspector.ScopeChainNode):
(WebInspector.ScopeChainNode.prototype.get empty):
Added support for new empty property.
* UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
(WebInspector.ScopeChainDetailsSidebarPanel.prototype._generateCallFramesSection):
Only create and display a DetailsSection if the scope is not empty (via empty).
2016-10-24 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Improve Quick Open sorting algorithm
https://bugs.webkit.org/show_bug.cgi?id=163705
Reviewed by Joseph Pecoraro.
* UserInterface/Models/ResourceQueryResult.js:
(WebInspector.ResourceQueryResult.prototype._calculateRank.getMultiplier):
(WebInspector.ResourceQueryResult.prototype._calculateRank):
Added logic to multiply the ranking increment/decrement based on whether the current match
is part of a sequence, whether that sequence began with a special character, and the length
of the current sequence.
2016-10-19 Dean Jackson <dino@apple.com>
Support CSS Shapes Level 1 without a prefix
https://bugs.webkit.org/show_bug.cgi?id=163709
<rdar://problem/28859369>
Reviewed by Myles Maxfield.
Replace -webkit-shape-outside with shape-outside.
* UserInterface/Models/CSSKeywordCompletions.js:
2016-10-19 Aaron Chu <aaron_chu@apple.com>
Web Inspector: AXI: expose computed tree node and heading level
https://bugs.webkit.org/show_bug.cgi?id=130825
<rdar://problem/16442349>
Reviewed by Joseph Pecoraro.
Updating the Web Accessibility Inspector to display Heading Level and Hierarchical Level.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/DOMNode.js:
(WebInspector.DOMNode.prototype.accessibilityProperties.accessibilityPropertiesCallback):
(WebInspector.DOMNode.prototype.accessibilityProperties):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility.accessibilityPropertiesCallback):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAccessibility):
2016-10-18 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Styles Sidebar highlights "translate" but not "translateX"
https://bugs.webkit.org/show_bug.cgi?id=163613
<rdar://problem/28829610>
Reviewed by Timothy Hatcher.
* UserInterface/Models/CSSCompletions.js:
(WebInspector.CSSCompletions.requestCSSCompletions):
The hash table objects we pass to CodeMirror expects keys to be lowercased.
2016-10-18 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CSS Autocompletion sometimes adds extra unexpected characters
https://bugs.webkit.org/show_bug.cgi?id=163612
<rdar://problem/28829557>
Reviewed by Timothy Hatcher.
* UserInterface/Controllers/CodeMirrorCompletionController.js:
(WebInspector.CodeMirrorCompletionController.prototype._generateCSSCompletions):
Better handle completions in cases where we are in the middle of a property
to avoid orphaned characters, or at the end of a function name to avoid creating
duplicate parenthesis.
2016-10-18 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION(r201171): Web Inspector: Timeline Recording playhead should always start immediately, not wait until first event
https://bugs.webkit.org/show_bug.cgi?id=163583
<rdar://problem/28815882>
Reviewed by Timothy Hatcher.
* UserInterface/Views/TimelineRecordingContentView.js:
(WebInspector.TimelineRecordingContentView.prototype._startUpdatingCurrentTime):
Revert logic change introduced by r201171 with no explanation.
Whenever we get a start time we should use it, regardless of
of what the current time is, precisely because the backend is
informing us of the start time to use.
2016-10-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add toggles for debugger pauses at console.assert failures
https://bugs.webkit.org/show_bug.cgi?id=139542
<rdar://problem/19281600>
Reviewed by Timothy Hatcher.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.get assertionsBreakpoint):
(WebInspector.DebuggerManager.prototype.isBreakpointRemovable):
(WebInspector.DebuggerManager.prototype._breakpointDisabledStateDidChange):
New breakpoint and toggling behavior.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype._breakpointTreeOutlineDeleteTreeElement):
(WebInspector.DebuggerSidebarPanel.prototype._compareTopLevelTreeElements.isSpecialBreakpoint):
(WebInspector.DebuggerSidebarPanel.prototype._compareTopLevelTreeElements):
New breakpoint tree element behavior.
(WebInspector.DebuggerSidebarPanel.prototype.saveStateToCookie):
(WebInspector.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
Sidebar restoration if it was selected.
* UserInterface/Images/Assertion.svg: Added.
* UserInterface/Images/gtk/Assertion.svg: Added.
* UserInterface/Views/BreakpointTreeElement.css:
(.breakpoint-assertion-icon .icon):
New sidebar icon for the global breakpoint.
2016-10-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Cleanup parts of DebuggerManager
https://bugs.webkit.org/show_bug.cgi?id=163400
Reviewed by Timothy Hatcher.
* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.restoreBreakpointsSoon):
(WebInspector.DebuggerManager.prototype.get paused):
(WebInspector.DebuggerManager.prototype.get pauseReason):
(WebInspector.DebuggerManager.prototype.get pauseData):
(WebInspector.DebuggerManager.prototype.get callFrames):
(WebInspector.DebuggerManager.prototype.get activeCallFrame):
(WebInspector.DebuggerManager.prototype.set activeCallFrame):
Put simple accessors at the top.
(WebInspector.DebuggerManager.prototype.get allExceptionsBreakpoint):
(WebInspector.DebuggerManager.prototype.get allUncaughtExceptionsBreakpoint):
(WebInspector.DebuggerManager.prototype.get breakpoints):
(WebInspector.DebuggerManager.prototype.breakpointForIdentifier):
(WebInspector.DebuggerManager.prototype.breakpointsForSourceCode):
(WebInspector.DebuggerManager.prototype.isBreakpointRemovable):
(WebInspector.DebuggerManager.prototype.isBreakpointEditable):
(WebInspector.DebuggerManager.prototype.get breakpointsDisabledTemporarily):
Group public breakpoint state and access methods.
(WebInspector.DebuggerManager.prototype.scriptForIdentifier):
(WebInspector.DebuggerManager.prototype.scriptsForURL):
(WebInspector.DebuggerManager.prototype.get searchableScripts):
(WebInspector.DebuggerManager.prototype.get knownNonResourceScripts):
Group public script access methods.
(WebInspector.DebuggerManager.prototype.pause):
(WebInspector.DebuggerManager.prototype.resume):
(WebInspector.DebuggerManager.prototype.stepOver):
(WebInspector.DebuggerManager.prototype.stepInto):
(WebInspector.DebuggerManager.prototype.stepOut):
(WebInspector.DebuggerManager.prototype.continueToLocation):
(WebInspector.DebuggerManager.prototype.addBreakpoint):
(WebInspector.DebuggerManager.prototype.removeBreakpoint):
Group and modernize public methods that perform actions.
(WebInspector.DebuggerManager.prototype.nextBreakpointActionIdentifier):
Misc. methods.
(WebInspector.DebuggerManager.prototype.breakpointResolved):
(WebInspector.DebuggerManager.prototype.reset):
(WebInspector.DebuggerManager.prototype.playBreakpointActionSound):
(WebInspector.DebuggerManager.prototype.scriptDidParse):
(WebInspector.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):
(WebInspector.DebuggerManager.prototype._setBreakpoint):
(WebInspector.DebuggerManager.prototype._breakpointEditablePropertyDidChange):
(WebInspector.DebuggerManager.prototype._updateBreakOnExceptionsState):
(WebInspector.DebuggerManager.prototype._associateBreakpointsWithSourceCode):
Minor cleanup in protected and private methods.
* UserInterface/Models/BreakpointAction.js:
(WebInspector.BreakpointAction):
Getting the next identifier is an action so it should be a function call.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.textEditorBreakpointAdded):
Remove unused parameter.
2016-10-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Dragging to delete a Breakpoint should never trigger a ContentView change
https://bugs.webkit.org/show_bug.cgi?id=163403
<rdar://problem/28762930>
Reviewed by Timothy Hatcher.
* UserInterface/Views/BreakpointTreeElement.js:
(WebInspector.BreakpointTreeElement.prototype.ondelete):
Signal when a breakpoint tree element will be going away because it was
deleted via the keyboard operation within the TreeOutline. This is a dirty
way to do the signal but we remove BreakpointTreeElements asynchronously
when the Breakpoint actually gets removed from the backend.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel.prototype._removeDebuggerTreeElement):
Deselect a BreakpointTreeElement if it was deleted in a way other then
the delete keyboard shortcut. This ensures another TreeElement selection
doesn't force ContentView changes.
2016-10-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Improve debugger highlight when inside of getter/setter calls
https://bugs.webkit.org/show_bug.cgi?id=163428
<rdar://problem/28769061>
Reviewed by Timothy Hatcher.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
When in the middle of a member expression at a '.' or '[' get the best member
expression range.
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype._updateExecutionRangeHighlight):
Include the character at the current position. This is useful since AST Nodes
don't give us token info but we would like to know if we are at particular tokens.
2016-10-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Unused Breakpoint getter/setter for "id" - should be "identifier"
https://bugs.webkit.org/show_bug.cgi?id=163395
Reviewed by Timothy Hatcher.
* UserInterface/Models/Breakpoint.js:
(WebInspector.Breakpoint.prototype.get identifier): Renamed.
(WebInspector.Breakpoint.prototype.set identifier): Renamed.
The only user is DebuggerManager which sets and gets. Previously
it was unexpectedly setting a direct property on the Breakpoint
instead of using these methods to set the member variable.
2016-10-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove uses of delete in SourceCodeTextEditor
https://bugs.webkit.org/show_bug.cgi?id=163379
Reviewed by Timothy Hatcher.
Remove uses of delete and better group member variables.
One of the deletes was deleting an incorrect property.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor):
(WebInspector.SourceCodeTextEditor.prototype.textEditorBreakpointAdded):
(WebInspector.SourceCodeTextEditor.prototype.textEditorBreakpointRemoved):
(WebInspector.SourceCodeTextEditor.prototype.textEditorBreakpointMoved):
(WebInspector.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedMarkedExpression):
(WebInspector.SourceCodeTextEditor.prototype._dismissEditingController):
(WebInspector.SourceCodeTextEditor.prototype.editingControllerDidFinishEditing):
2016-10-14 Joseph Pecoraro <pecoraro@apple.com>
Uncaught Exception: TypeError: this.positionToOffset is not a function - seen hovering expressions with Type Profiler enabled
https://bugs.webkit.org/show_bug.cgi?id=163405
<rdar://problem/28763953>
Reviewed by Matt Baker.
* UserInterface/Views/SourceCodeTextEditor.js:
Use correct method name, the old one must have gone away.
2016-10-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Improve support for logging Proxy objects in console
https://bugs.webkit.org/show_bug.cgi?id=163323
<rdar://problem/28432553>
Reviewed by Timothy Hatcher.
* UserInterface/Views/ConsoleMessageView.js:
(WebInspector.ConsoleMessageView.prototype._formatParameter):
Treat a Proxy like any other object.
2016-10-12 Joseph Pecoraro <pecoraro@apple.com>
Emit DebugHooks uniformly with pause locations instead of having separate pause locations and op_debug emits
https://bugs.webkit.org/show_bug.cgi?id=162809
Reviewed by Geoffrey Garen.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
When pausing on the variable assignment inside for..of and for..in don't just
highlight "var foo" but include the right hand side "var foo in ..." or
"var foo of ...".
2016-10-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Whole program sometimes highlighted instead of just first statement
https://bugs.webkit.org/show_bug.cgi?id=163300
<rdar://problem/28723162>
Reviewed by Timothy Hatcher.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
Avoid highlighting the entire program by skipping a Program type Node.
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype.setExecutionLineAndColumn):
Avoid unnecessary work before content has loaded.
(WebInspector.TextEditor.prototype.currentPositionToOriginalOffset):
Avoid unnecessary indirection to get the CodeMirror editor.
2016-10-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove line highlight on primary execution line while stepping because it is distracting
https://bugs.webkit.org/show_bug.cgi?id=163294
<rdar://problem/28721176>
Reviewed by Timothy Hatcher.
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype._updateExecutionLine):
When setting the primary execution line, remove default line highlights.
2016-10-10 Matt Baker <mattbaker@apple.com>
Web Inspector: Revealed line not highlighted in TextEditor while debugger paused
https://bugs.webkit.org/show_bug.cgi?id=163197
Reviewed by Timothy Hatcher.
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype.revealPosition.revealAndHighlightLine):
Avoid highlighting the execution line while debugging, but allow
other lines to be highlighted.
2016-10-06 Devin Rousso <dcrousso+webkit@gmail.com>
Inspector exception in `parseTextForRule()` when pasting into CSS rule selector
https://bugs.webkit.org/show_bug.cgi?id=162792
Reviewed by Matt Baker.
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WebInspector.CSSStyleDeclarationSection.prototype._handleSelectorPaste.parseTextForRule):
Changed regular expression for matching CSS rules to allow newlines in pasted text.
2016-10-02 Devin Rousso <dcrousso+webkit@gmail.com>
Web Inspector: Clicking twice on the color swatch square should hide the color picker
https://bugs.webkit.org/show_bug.cgi?id=162759
Reviewed by Matt Baker.
* UserInterface/Views/InlineSwatch.js:
(WebInspector.InlineSwatch):
(WebInspector.InlineSwatch.prototype.didDismissPopover):
(WebInspector.InlineSwatch.prototype._swatchElementClicked):
Remove the "click" event listener when a popover is presented to prevent improper
interaction. Add the event listener back when the popover is dismissed.
2016-10-02 Matt Baker <mattbaker@apple.com>
Web Inspector: Exception thrown when hovering network waterfall graphs during reload
https://bugs.webkit.org/show_bug.cgi?id=162850
<rdar://problem/28579653>
Reviewed by Brian Burg.
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WebInspector.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar):
Check that the node's data grid reference is valid before use.
(WebInspector.ResourceTimelineDataGridNode):
2016-10-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Selection does not show up over execution highlight ranges
https://bugs.webkit.org/show_bug.cgi?id=162844
<rdar://problem/28579121>
Reviewed by Matt Baker.
* Scripts/update-codemirror-resources.rb:
* UserInterface/External/CodeMirror/mark-selection.js: Added.
* UserInterface/Main.html:
New add-on that makes selection a text marker so it can be styled
at the same level as other text markers.
* UserInterface/Views/TextEditor.css:
(.text-editor > .CodeMirror .execution-range-highlight:not(.CodeMirror-selectedtext)):
Don't use execution-range-highlight styles if the text is selected.
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor):
Enable the text selection as text markers addon.
2016-09-30 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Make debugger stepping highlights work in inline <script>s
https://bugs.webkit.org/show_bug.cgi?id=162753
<rdar://problem/28551332>
Reviewed by Brian Burg.
* UserInterface/Models/TextRange.js:
(WebInspector.TextRange.prototype.contains):
Check if a given line/column falls within this range.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype._getAssociatedScript):
If we are in a Document resource find the associated script at a given position.
(WebInspector.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
When comparing offsets to SyntaxTree offsets, the SyntaxTree's offset of 0 is the
first character of the Script, which differs from the current SourceCode's offset.
Adjust the offset by the Script's startOffset.
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype.currentPositionToOriginalPosition):
(WebInspector.TextEditor.prototype._updateExecutionRangeHighlight):
Pass both the original offset and original position to the delegate.
2016-09-30 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Stepping through `a(); b(); c();` it is unclear where we are and what is about to execute
https://bugs.webkit.org/show_bug.cgi?id=161658
<rdar://problem/28181254>
Reviewed by Geoffrey Garen.
* UserInterface/Models/Script.js:
(WebInspector.Script.prototype.requestScriptSyntaxTree):
Fix first calls to requestScriptSyntaxTree. They were getting an uncaught
exception because the content argument was missing.
* UserInterface/Models/ScriptSyntaxTree.js:
(WebInspector.ScriptSyntaxTree.prototype.containersOfOffset):
Find all AST nodes that contain a particular offset.
* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor):
(WebInspector.SourceCodeTextEditor.prototype.close):
(WebInspector.SourceCodeTextEditor.prototype._activeCallFrameDidChange):
(WebInspector.SourceCodeTextEditor.prototype._activeCallFrameSourceCodeLocationChanged):
(WebInspector.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
Provide a good highlight range for a given offset. This is normally the start
of a statement/expression, inside a statement/expression, or the closing brace
of a function (leaving a function). Provide good ranges for each of these.
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor):
(WebInspector.TextEditor.set string.update):
(WebInspector.TextEditor.prototype.set string):
(WebInspector.TextEditor.prototype.setExecutionLineAndColumn):
(WebInspector.TextEditor.prototype.revealPosition.revealAndHighlightLine):
(WebInspector.TextEditor.prototype.revealPosition):
(WebInspector.TextEditor.prototype.currentPositionToOriginalOffset):
(WebInspector.TextEditor.prototype._updateAfterFormatting):
(WebInspector.TextEditor.prototype.set executionLineNumber): Deleted.
(WebInspector.TextEditor.prototype.set executionColumnNumber): Deleted.
(WebInspector.TextEditor.prototype._updateExecutionLine.update): Deleted.
Always set the execution line and column together, to simplify how we update highlights.
(WebInspector.TextEditor.prototype._clearMultilineExecutionLineHighlights):
(WebInspector.TextEditor.prototype._updateExecutionLine):
When updating the main highlight clear any multi-line highlights.
(WebInspector.TextEditor.prototype._updateExecutionRangeHighlight):
Ask the delegate for a specific highlight range. If provided use that range,
otherwise just highlight the end of the line. Once we know the range, if it
is multiple lines, give the extra lines the full line highlight as well.
Also make adjustments, such as not highlighting trailing whitespace.
* UserInterface/Views/TextEditor.css:
(.text-editor > .CodeMirror .execution-line.primary .CodeMirror-linenumber::after):
(.text-editor > .CodeMirror .execution-line):
(.text-editor > .CodeMirror .execution-line .CodeMirror-matchingbracket):
(.text-editor > .CodeMirror .execution-range-highlight):
Styles for execution lines and execution range highlights.
2016-09-29 Aaron Chu <aaron_chu@apple.com>
Web Inspector: AXI: linkified refs to #document and #text are not usually navigable nodes; consider delinkifying them
https://bugs.webkit.org/show_bug.cgi?id=130600
<rdar://problem/16391333>
Reviewed by Brian Burg.
Removing link style for non-navigable nodes by first
checking nodeType of the node.
* UserInterface/Base/DOMUtilities.js:
(WebInspector.linkifyNodeReference):
2016-09-27 Matt Baker <mattbaker@apple.com>
Web Inspector: Refreshing while in Timelines-tab causes negative timestamps in Network-tab
https://bugs.webkit.org/show_bug.cgi?id=160051
<rdar://problem/27480122>
Reviewed by Brian Burg.
* UserInterface/Views/NetworkGridContentView.js:
(WebInspector.NetworkGridContentView.prototype.get startTime):
(WebInspector.NetworkGridContentView.prototype.get zeroTime):
Use the cached start time for graph data source properties instead of
relying on the ruler, which requires a layout in order to be updated
for the first time.
2016-09-27 Matt Baker <mattbaker@apple.com>
Web Inspector: Unfocusing / Focusing inspector window should not change ContentView
https://bugs.webkit.org/show_bug.cgi?id=162572
<rdar://problem/28479562>
Reviewed by Brian Burg.
Improve NavigationSidebarPanel logic for coordinating selection between trees.
When tree selection changes, the most recent selection should be restored
the next time the tree is focused.
The sidebar should also handle focusing a tree for the first time, in
which no previous selection exists, and focusing a tree that has had its
previous selection filtered out (hidden).
* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineDidFocus):
(WebInspector.NavigationSidebarPanel.prototype._contentTreeOutlineTreeSelectionDidChange):
Restoring the last deselected element, instead of the last selected element
only works when the selection is moving from one tree to another. When
the elements belong to the same tree the newly selected element won't
be saved until the next selection change. If the window loses and regains
the focus before then, the tree will restore the previous selection,
effectively reverting the last selection change.
2016-09-27 Tomas Popela <tpopela@redhat.com>
[GTK] Mac defaults are used for key shortcuts on Linux
https://bugs.webkit.org/show_bug.cgi?id=162564
Don't set Mac's default keymap as a fallthrough for CodeMirror when we
are not on Mac.
Reviewed by Carlos Garcia Campos.
* UserInterface/Test.html: Include Platform.js for the
WebInspector.Platform definition.
* UserInterface/Views/CodeMirrorAdditions.js:
2016-09-26 Matt Baker <mattbaker@apple.com>
Web Inspector: Box Model values not updated when DOM node styles change
https://bugs.webkit.org/show_bug.cgi?id=162525
Reviewed by Brian Burg.
The Box Model section should refresh itself when the selected node's
computed style changes. This is necessary since the Styles sidebar
doesn't always refresh its sections on node changes.
* UserInterface/Views/BoxModelDetailsSectionRow.js:
(WebInspector.BoxModelDetailsSectionRow.prototype.set nodeStyles):
Refresh metrics whenever the computed style changes.
(WebInspector.BoxModelDetailsSectionRow.prototype._getBox):
(WebInspector.BoxModelDetailsSectionRow.prototype._getComponentSuffix):
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createValueElement):
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createBoxPartElement):
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createContentAreaElement):
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics):
Drive-by cleanup to make this large function easier to read.
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createElement): Deleted.
Renamed createValueElement.
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createContentAreaWidthElement): Deleted.
(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createContentAreaHeightElement): Deleted.
Combined these into a single function taking a property name (width or height).
== Rolled over to ChangeLog-2016-09-26 ==