blob: ed8cd44b1fd43829608ca8dcb835b4ab2a816161 [file] [log] [blame]
2021-06-11 Patrick Angle <pangle@apple.com>
Web Inspector: Add instrumentation to node destruction for InspectorDOMAgent
https://bugs.webkit.org/show_bug.cgi?id=226624
Reviewed by Devin Rousso.
Listen for the new `DOM.willDestroyDOMNode` event in order to cleanup and remaining references to that Node.
This work serves as a prelude to <https://webkit.org/b/189687> (Web Inspector: preserve DOM.NodeId if a node is
removed and re-added) to eventually only forget about nodes upon destruction, instead of removal from the DOM
tree.
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager.prototype.willDestroyDOMNode):
* UserInterface/Protocol/DOMObserver.js:
(WI.DOMObserver.prototype.willDestroyDOMNode):
* UserInterface/Views/DOMTreeUpdater.js:
(WI.DOMTreeUpdater.prototype._nodeRemoved):
2021-06-08 Razvan Caliman <rcaliman@apple.com>
Web Inspector: Styles panel slow to render when inspecting node with many inherited CSS variables
https://bugs.webkit.org/show_bug.cgi?id=225972
<rdar://problem/78211185>
Reviewed by Devin Rousso.
Do not show unused inherited CSS variables in the Styles details sidebar.
When aggregating styles for the selected node in `WI.DOMNodeStyles`, collect a list of names of CSS variables used in CSS property values.
In the Styles details sidebar, skip rendering declarations of inherited CSS variables that are not found in this list.
Always show inherited variables that are used, either directly inherited or via reference (variables using other variables in their value).
Always show inherited variables used as values of inheritable properties like color, font-size, etc.
When a CSS rule contains hidden inherited variables, offer a button to request disclosing them for that rule.
Option-click to show unused inherited variables in all matching rules.
Clicking the "Go to variable" button automatically renders all the unused variables in the CSS rule where the target variable is declared.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.findVariableNames):
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles):
(WI.DOMNodeStyles.prototype.get usedCSSVariables):
(WI.DOMNodeStyles.prototype._updateStyleCascade):
(WI.DOMNodeStyles.prototype._collectUsedCSSVariables):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property):
(.spreadsheet-style-declaration-editor > .hidden-variables-button):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get propertiesToRender):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.set propertyVisibilityMode):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetCSSStyleDeclarationEditorSetAllPropertyVisibilityMode):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.spreadsheetCSSStyleDeclarationSectionSetAllPropertyVisibilityMode):
2021-06-04 Devin Rousso <drousso@apple.com>
Web Inspector: cannot see experimental settings when inspecting `ServiceWorker`
https://bugs.webkit.org/show_bug.cgi?id=226666
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
There are experimental settings that have nothing to do with preview features or CSS. Don't
limit the Experimental pane to only if those things exist.
2021-06-04 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: undefined is not an object (evaluating 'InspectorBackend.Enum.Page.ResourceType')
https://bugs.webkit.org/show_bug.cgi?id=226664
Reviewed by Joseph Pecoraro.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass.prototype.get Enum):
Use the list of all registered domains, not just the active domains, as only commands/events
are able to be filtered by target type.
2021-05-15 Said Abou-Hallawa <said@apple.com>
Implement CanvasRenderingContext2D.createConicGradient
https://bugs.webkit.org/show_bug.cgi?id=225539
Reviewed by Sam Weinig.
* UserInterface/Models/NativeFunctionParameters.js:
* UserInterface/Models/Recording.js:
(WI.Recording.prototype.async swizzle):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._classNameForAction):
2021-05-10 Devin Rousso <drousso@apple.com>
Web Inspector: Network: rename "XHR" to "XHR/Fetch"
https://bugs.webkit.org/show_bug.cgi?id=224900
Reviewed by Timothy Hatcher.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.addScopeBarItem): Added.
(WI.NetworkTableContentView.displayNameForResource):
(WI.NetworkTableContentView.shortDisplayNameForResourceType): Deleted.
* Localizations/en.lproj/localizedStrings.js:
2021-05-10 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Layout panel "Grid Overlays" main checkbox has dead space (no interaction) between checkbox and label text
https://bugs.webkit.org/show_bug.cgi?id=225433
<rdar://problem/77590883>
Reviewed by Devin Rousso.
Make the empty space between the checkbox and the label text clickable in:
- Everywhere in Settings tab
- Layout panel, Page Overlay Options
- Grid Overlay header
* UserInterface/Main.html:
* UserInterface/Views/CSSGridSection.css:
(.css-grid-section .node-display-name):
(.css-grid-section .toggle-all):
(.css-grid-section :is(.setting-editor, .node-overlay-list-item-container, .heading) input[type="checkbox"]):
(.css-grid-section .setting-editor > input[type="checkbox"]):
(.css-grid-section .node-display-name,): Deleted.
Make all checkbox labels in the Grid section align vertically.
* UserInterface/Views/CSSGridSection.js:
(WI.CSSGridSection.prototype.initialLayout):
* UserInterface/Views/SettingEditor.css: Copied from Source/WebInspectorUI/UserInterface/Views/CSSGridSection.css.
(.setting-editor input):
(.setting-editor > input[type="checkbox"]):
(.setting-editor > label):
* UserInterface/Views/SettingEditor.js:
(WI.SettingEditor):
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor:first-child > *):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor input[type="checkbox"]):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor select):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor input[type="number"]):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor input[type="text"]):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor:first-child > *): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor select): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="number"]): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="text"]): Deleted.
Rename ".editor" to ".setting-editor" so it matches SettingEditor.css.
2021-05-10 Devin Rousso <drousso@apple.com>
Web Inspector: add support for panning/zooming on images
https://bugs.webkit.org/show_bug.cgi?id=224655
Reviewed by Timothy Hatcher.
* UserInterface/Controllers/GestureController.js: Added.
(WI.GestureController):
(WI.GestureController.prototype.get scale):
(WI.GestureController.prototype.set scale):
(WI.GestureController.prototype.get translate):
(WI.GestureController.prototype.set translate):
(WI.GestureController.prototype.reset):
(WI.GestureController.prototype._startScaleInteraction):
(WI.GestureController.prototype._updateScaleInteraction):
(WI.GestureController.prototype._endScaleInteraction):
(WI.GestureController.prototype._handleWheel):
(WI.GestureController.prototype._handleGestureStart):
(WI.GestureController.prototype._handleGestureChange):
(WI.GestureController.prototype._handleGestureEnd):
(WI.GestureController.prototype._handleMouseDown):
(WI.GestureController.prototype._handleMouseMove):
(WI.GestureController.prototype._handleMouseUp):
Add a general controller class that takes a `target` (and optionally a `container`) and adds
event listeners to handle various gestures:
- scale (both via trackpad and mouse wheel)
- transform (mouse click and drag)
* UserInterface/Views/ImageResourceContentView.js:
(WI.ImageResourceContentView):
(WI.ImageResourceContentView.prototype.get navigationItems):
(WI.ImageResourceContentView.prototype.contentAvailable):
(WI.ImageResourceContentView.prototype.gestureControllerDidScale): Added.
(WI.ImageResourceContentView.prototype.gestureControllerDidTranslate): Added.
(WI.ImageResourceContentView.prototype._updateResetGestureButtonNavigationItemLabel): Added.
(WI.ImageResourceContentView.prototype._handleResetGestureButtonNavitationItemClicked): Added.
(WI.ImageResourceContentView.prototype._handleZoomOutGestureButtonNavitationItemClicked): Added.
(WI.ImageResourceContentView.prototype._handleZoomInGestureButtonNavitationItemClicked): Added.
* UserInterface/Views/ImageResourceContentView.css:
(.content-view.resource.image > .img-container):
(.navigation-bar > .item.image-gesture-reset): Added.
Add a `WI.GestureController` and manipulate the `scale` and `transform` of the `<img>`.
Add navigation items that show the current scale (clicking it will reset the gesture), zoom
in, and zoom out.
* UserInterface/Views/LocalResourceOverrideLabelView.css:
(.local-resource-override-label-view):
Add a `z-index` so that zoomed images don't appear on top.
* UserInterface/Views/ResourceCollectionContentView.js:
(WI.ResourceCollectionContentView.prototype.get contentViewConstructorOptions):
Don't create the `WI.GestureController` in collection views.
* UserInterface/Main.html:
* UserInterface/Images/ZoomIn.svg: Added.
* UserInterface/Images/ZoomOut.svg: Added.
* Localizations/en.lproj/localizedStrings.js:
2021-05-07 Patrick Angle <pangle@apple.com>
Web Inspector: Breakpoint action add/remove buttons are not vertically aligned with action dropdown
https://bugs.webkit.org/show_bug.cgi?id=225543
Reviewed by Devin Rousso.
Change the breakpoint action add/remove button's `margin-top` to `margin-block-start`, and adjust the value to
properly vertically center the buttons with the action type menu.
* UserInterface/Views/BreakpointActionView.css:
(:matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)):
2021-05-07 Patrick Angle <pangle@apple.com>
Web Inspector: Default source for new test cases is minified
https://bugs.webkit.org/show_bug.cgi?id=225546
Reviewed by Devin Rousso.
Move the placeholder test code to `WI.DefaultAudits` as part of the non-minified sources so that new audit test
cases do not have their default placeholder script minified. This also allows us to remove
`WI.AuditTestCase.stringifyFunction` as it is no longer needed.
* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.stringifyFunction): Deleted.
* UserInterface/NonMinified/DefaultAudits.js:
(WI.DefaultAudits.newAuditPlaceholder):
* UserInterface/Views/CreateAuditPopover.js:
(WI.CreateAuditPopover.prototype.dismiss):
(WI.CreateAuditPopover.prototype.dismiss.const.placeholderTestFunction): Deleted.
2021-05-04 Devin Rousso <drousso@apple.com>
Web Inspector: add assertion for `WI.View` re-entrancy
https://bugs.webkit.org/show_bug.cgi?id=224678
Reviewed by Joseph Pecoraro.
Add `console.assert` (which are removed from production builds) around each critical
`WI.View` subclass member function to prevent reentrancy.
- `initialLayout`
- `sizeDidChange`
- `layout`
- `didLayoutSubtree`
This is important because `WI.View.prototype._layoutSubtree` sets any related state after
calling any of the above (e.g. `_didInitialLayout` after `initialLayout`), meaning that any
checks for the related state (which sometimes control whether the function is called, such
as in the case of `initialLayout`) would think that the function hadn't been called yet. See
r276170 for an example of how this can happen and the potential problems it can cause.
* UserInterface/Views/View.js:
(WI.View.prototype._layoutSubtree):
* UserInterface/Base/Utilities.js:
(WI.setReentrantCheck): Added.
(WI.clearReentrantCheck): Added.
2021-05-04 Razvan Caliman <rcaliman@apple.com>
Web Inspector: Sources: Inconsistent selection in source tree when grouped by path
https://bugs.webkit.org/show_bug.cgi?id=225317
Reviewed by Devin Rousso.
Ensure origin tree elements for different domains in the Sources Tab behave as folder tree elements
in that they can be individually selected without triggering rendering of any resource.
In essence, restore behavior prior to https://trac.webkit.org/changeset/248912/webkit
The only exception is for document resources. Clicking on the origin tree element associated with a document resource,
triggers rendering of the corresponding document.
* UserInterface/Views/OriginTreeElement.js:
(WI.OriginTreeElement):
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._addResource):
2021-04-28 Razvan Caliman <rcaliman@apple.com>
Web Inspector: CSS Grid - measure usage of grid overlay options
https://bugs.webkit.org/show_bug.cgi?id=225060
<rdar://75843294>
Reviewed by BJ Burg.
Add telemetry instrumentation to track grid overlay configurations and time spent using them.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
* UserInterface/Controllers/GridOverlayConfigurationDiagnosticEventRecorder.js: Added.
(WI.GridOverlayConfigurationDiagnosticEventRecorder):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.get eventSamplingInterval):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype.setup):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype.teardown):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype._handleGridOverlayShown):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype._handleGridOverlayHidden):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype.handleEvent):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype._startEventSamplingTimer):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype._stopEventSamplingTimer):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype._sampleCurrentOverlayConfiguration):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype._didObserveUserInteraction):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype._handleWindowFocus):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype._handleWindowBlur):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype._handleWindowKeyDown):
(WI.GridOverlayConfigurationDiagnosticEventRecorder.prototype._handleWindowMouseDown):
* UserInterface/Controllers/OverlayManager.js:
(WI.OverlayManager.prototype.hasVisibleGridOverlays):
* UserInterface/Main.html:
2021-04-27 Patrick Angle <pangle@apple.com>
Web Inspector: Rename "Open in New Tab" context menu item to "Open in New Window"
https://bugs.webkit.org/show_bug.cgi?id=225125
Reviewed by BJ Burg.
Update the context menu item label, as the "Open in..." context menu item opens the target item in a new window,
not a new tab.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForURL):
2021-04-27 Patrick Angle <pangle@apple.com>
Web Inspector: Default Audits script are minified in release builds
https://bugs.webkit.org/show_bug.cgi?id=225009
Reviewed by BJ Burg.
Covered by new test:
- inspector/audit/non-minified-default-audits.html
The default audits have been moved out of `AuditManager.js` and into a special `DefaultAudits.js` in the new
`NonMinified` directory, which contains JavaScript sources that should be included in `Main.js` and
`TestCombined.js`, but should not have whitespace stripped from their contents because the whitespace is
important to the script. For example, the source for the default audits are visible to the user, and therefore
we want to present well-formatted source in those contexts.
* Scripts/combine-resources.pl:
- Added `NonMinified` directory to list of default `inputDirectoryPattern` exceptions for combining resources.
- Added `--skip-concatenate-tag` so that we don't add tags for script we will eventually append to another script.
* Scripts/copy-user-interface-resources.pl:
- Handle `NonMinified` directory for sources that will be appended to Main.js, but should not be minified.
- Handle `NonMinified` directory for sources that will be appended to TestCombined.js.
(combineOrStripResourcesForWebKitAdditions):
- Drive-by fix for typo in combineOrStripResourcesForWebKitAdditions that caused errors to be emitted during builds.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype._addDefaultTests):
(WI.AuditManager):
(WI.AuditManager.prototype._addDefaultTests.const.levelPass): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.levelWarn): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.levelFail): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.levelError): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.levelUnsupported): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.dataDOMNodes): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.dataDOMAttributes): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.dataErrors): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.dataCustom): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.getElementsByComputedRole): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.getActiveDescendant): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.getChildNodes): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.getComputedProperties): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.getControlledNodes): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.getFlowedNodes): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.getMouseEventNode): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.getOwnedNodes): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.getParentNode): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.getSelectedChildNodes): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.hasEventListeners): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.hasEventListenersClick): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.getResources): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.getResourceContent): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.unsupported): Deleted.
(WI.AuditManager.prototype._addDefaultTests.hasChildWithRole): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testMenuRoleForRequiredChildren): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testGridRoleForRequiredChildren): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testForAriaLabelledBySpelling): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testForMultipleBanners): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testForLinkLabels): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testRowGroupRoleForRequiredChildren): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testTableRoleForRequiredChildren): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testForMultipleLiveRegions): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testListBoxRoleForRequiredChildren): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testImageLabels): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testForAriaHiddenFalse): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testTreeRoleForRequiredChildren): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testRadioGroupRoleForRequiredChildren): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testFeedRoleForRequiredChildren): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testTabListRoleForRequiredChildren): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testButtonLabels): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testRowRoleForRequiredChildren): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testListRoleForRequiredChildren): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testComboBoxRoleForRequiredChildren): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testForMultipleMainContentSections): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testDialogsForLabels): Deleted.
(WI.AuditManager.prototype._addDefaultTests.const.testForInvalidAriaHiddenValue): Deleted.
(WI.AuditManager.prototype._addDefaultTests.removeWhitespace): Deleted.
* UserInterface/Main.html:
* UserInterface/NonMinified/DefaultAudits.js: Added.
(WI.DefaultAudits.levelPass):
(WI.DefaultAudits.levelWarn):
(WI.DefaultAudits.levelFail):
(WI.DefaultAudits.levelError):
(WI.DefaultAudits.levelUnsupported):
(WI.DefaultAudits.dataDOMNodes):
(WI.DefaultAudits.dataDOMAttributes):
(WI.DefaultAudits.dataErrors):
(WI.DefaultAudits.dataCustom):
(WI.DefaultAudits.getElementsByComputedRole):
(WI.DefaultAudits.getActiveDescendant):
(WI.DefaultAudits.getChildNodes):
(WI.DefaultAudits.getComputedProperties):
(WI.DefaultAudits.getControlledNodes):
(WI.DefaultAudits.getFlowedNodes):
(WI.DefaultAudits.getMouseEventNode):
(WI.DefaultAudits.getOwnedNodes):
(WI.DefaultAudits.getParentNode):
(WI.DefaultAudits.getSelectedChildNodes):
(WI.DefaultAudits.hasEventListeners):
(WI.DefaultAudits.hasEventListenersClick):
(WI.DefaultAudits.getResources):
(WI.DefaultAudits.getResourceContent):
(WI.DefaultAudits.unsupported):
(hasChildWithRole):
(WI.DefaultAudits.testMenuRoleForRequiredChildren):
(WI.DefaultAudits.testGridRoleForRequiredChildren):
(WI.DefaultAudits.testForAriaLabelledBySpelling):
(WI.DefaultAudits.testForMultipleBanners):
(WI.DefaultAudits.testForLinkLabels):
(WI.DefaultAudits.testRowGroupRoleForRequiredChildren):
(WI.DefaultAudits.testTableRoleForRequiredChildren):
(WI.DefaultAudits.testForMultipleLiveRegions):
(WI.DefaultAudits.testListBoxRoleForRequiredChildren):
(WI.DefaultAudits.testImageLabels):
(WI.DefaultAudits.testForAriaHiddenFalse):
(WI.DefaultAudits.testTreeRoleForRequiredChildren):
(WI.DefaultAudits.testRadioGroupRoleForRequiredChildren):
(WI.DefaultAudits.testFeedRoleForRequiredChildren):
(WI.DefaultAudits.testTabListRoleForRequiredChildren):
(WI.DefaultAudits.testButtonLabels):
(WI.DefaultAudits.testRowRoleForRequiredChildren):
(WI.DefaultAudits.testListRoleForRequiredChildren):
(WI.DefaultAudits.testComboBoxRoleForRequiredChildren):
(WI.DefaultAudits.testForMultipleMainContentSections):
(WI.DefaultAudits.testDialogsForLabels):
(WI.DefaultAudits.testForInvalidAriaHiddenValue):
* UserInterface/Test.html:
2021-04-27 Don Olmstead <don.olmstead@sony.com>
[CMake] Don't use FORWARDING_HEADERS_DIR for GTK WebKit headers
https://bugs.webkit.org/show_bug.cgi?id=225006
Reviewed by Michael Catanzaro.
Use WebKit2Gtk_FRAMEWORK_HEADERS_DIR and WebKit2Gtk_DERIVED_SOURCES_DIR for WebKit2 GTK
headers instead of FORWARDING_HEADERS_DIR and DERIVED_SOURCES_DIR.
* PlatformGTK.cmake:
2021-04-26 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Audit Tab: Edits are not committed when leaving edit mode unless you first click into another text field
https://bugs.webkit.org/show_bug.cgi?id=224318
<rdar://problem/76382755>
Reviewed by Devin Rousso.
Save test and setup code when pressing "Done" button. Don't rely on the blur event because it doesn't fire on
the focused element when it's removed from the DOM.
* UserInterface/Models/AuditTestBase.js:
(WI.AuditTestBase.prototype.set setup):
* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.prototype.set test):
Allow setting `test` and `setup` after editing is finished.
* UserInterface/Views/AuditTestCaseContentView.js:
(WI.AuditTestCaseContentView.prototype.layout):
(WI.AuditTestCaseContentView.prototype.saveEditedData):
* UserInterface/Views/AuditTestContentView.js:
(WI.AuditTestContentView.prototype.detached):
Saving test on `detached` saves it when selecting a different test in the navigation sidebar.
(WI.AuditTestContentView.prototype.saveEditedData):
(WI.AuditTestContentView.prototype._createSetupEditor):
(WI.AuditTestContentView.prototype._handleEditingChanged):
(WI.AuditTestContentView):
2021-04-26 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: Uncaught Exception: Failed to execute 'delete' on 'IDBObjectStore': The parameter is not a valid key range.
https://bugs.webkit.org/show_bug.cgi?id=224993
Reviewed by BJ Burg.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.async processJSON):
(WI.AuditManager.prototype.async addTest):
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype.willDismissPopover):
* UserInterface/Views/AuditTreeElement.js:
(WI.AuditTreeElement.prototype.populateContextMenu):
Make sure to save any newly created audits not already in `WI.objectStores.audits` immediately
so that if the developer tries to delete it before exiting Edit mode (which is normally when
everything is saved) an exception isn't thrown about it not being in `WI.objectStores.audits`.
2021-04-26 Razvan Caliman <rcaliman@apple.com>
Web Inspector: REGRESSION(r270134) Elements Tab: Details Sidebar toggle is unexpectedly disabled after switching from Timelines tab
https://bugs.webkit.org/show_bug.cgi?id=224772
<rdar://73470211>
Reviewed by Devin Rousso.
Ensure the logic for identifying and showing the represented object for the selected `DOMNode`
is not run unless the Elements Tab is visible. This guards agains the partial setting of state
when the Elements Tab is not the default tab while opening Web Inspector.
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
(WI.ElementsTabContentView.prototype.showRepresentedObject):
(WI.ElementsTabContentView.prototype.attached):
(WI.ElementsTabContentView.prototype.detached):
(WI.ElementsTabContentView.prototype._showDOMTreeContentViewIfNeeded):
(WI.ElementsTabContentView.prototype._mainFrameDidChange):
(WI.ElementsTabContentView.prototype._mainResourceDidChange):
2021-04-25 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: REGRESSION(?): creating a new test in Edit mode causes the Results folder to appear
https://bugs.webkit.org/show_bug.cgi?id=224994
Reviewed by Darin Adler.
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype._addTest):
2021-04-22 BJ Burg <bburg@apple.com>
[Cocoa] re-enable test case WKInspectorDelegate.InspectorConfiguration
https://bugs.webkit.org/show_bug.cgi?id=224577
<rdar://70505272>
Reviewed by Devin Rousso.
Adjust the CSP directive list in the <meta> tag to allow for customization
by WebKit ports.
* UserInterface/Main.html:
- Remove `default-src 'self'` so as not to block custom scheme loads.
- Remove `connect-src * ws:` so as not to block custom scheme loads.
- Add `object-src 'none'` as we have no reason to allow <object>, <embed>, or <applet>.
2021-04-20 Razvan Caliman <rcaliman@apple.com>
Web Inspector: Tree Outlines: `ondetach` can be called without `onattach` ever being called
https://bugs.webkit.org/show_bug.cgi?id=224652
<rdar://problem/76746385>
Reviewed by Devin Rousso.
Ensure `TreeElement.ondetach()` cannot be called if the conditions
for previously calling `TreeElement.onattach()` have not been met.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype._detach):
2021-04-19 Patrick Angle <pangle@apple.com>
REGRESSION (r268691 && r270134): Web Inspector: Clicking on go-to arrow in Computed panel no longer works
https://bugs.webkit.org/show_bug.cgi?id=224774
Reviewed by Devin Rousso.
The Styles panel will not always be part of the same sidebar as the Computed panel as of r268691, so we should
look for the Styles panel in WI.detailsSidebar, which will report all of the panels it manages across multiple
sidebars. Additionally, as of r270134, there is no longer a private `_visible` property for
`WI.StyleDetailsPanel`, so it can not be used by `WI.SpreadsheetRulesStyleDetailsPanel`. Instead, visibility
should be determined by checking if the panel is attached and not pending layout.
* UserInterface/Views/ComputedStyleDetailsSidebarPanel.js:
(WI.ComputedStyleDetailsSidebarPanel.prototype.computedStyleDetailsPanelShowProperty):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.scrollToSectionAndHighlightProperty):
2021-04-19 Devin Rousso <drousso@apple.com>
Web Inspector: Graphics: add support for `steps()`/`spring()` CSS timing functions
https://bugs.webkit.org/show_bug.cgi?id=224654
Reviewed by BJ Burg.
* UserInterface/Models/Geometry.js:
(WI.StepsFunction): Added.
(WI.StepsFunction.fromString): Added.
(WI.StepsFunction.prototype.get type): Added.
(WI.StepsFunction.prototype.get count): Added.
(WI.StepsFunction.prototype.copy): Added.
(WI.StepsFunction.prototype.toString): Added.
Create a model object for `steps()` CSS timing function.
* UserInterface/Models/Animation.js:
(WI.Animation.prototype._updateEffect):
Also support `effect.timingFunction`/`keyframe.easing` being a `steps()`/`spring()` CSS timing function.
* UserInterface/Views/AnimationContentView.js:
(WI.AnimationContentView.prototype._refreshPreview):
Create a UI for `steps()`/`spring()` CSS timing functions.
2021-04-19 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(?): Network: Request (Object Tree) is sometimes empty
https://bugs.webkit.org/show_bug.cgi?id=224768
<rdar://problem/76783636>
Reviewed by BJ Burg.
* UserInterface/Views/LocalJSONContentView.js:
(WI.LocalJSONContentView.prototype.renderRemoteObject):
If the `WI.RemoteObject` is simple enough to be rendered inline, `WI.ObjectTreeView` won't
show a `WI.TreeOutline` by default. We have to tell it to use a `WI.TreeOutline` by passing
`forceExpanding = true` into the constructor.
* UserInterface/Views/ObjectTreeView.js:
(WI.ObjectTreeView.prototype.showOnlyJSON):
Add some `console.assert` to help prevent this from happening again.
2021-04-19 Kimmo Kinnunen <kkinnunen@apple.com>
Enable -Wthread-safety, add attributes to custom lock classes, and provide macros to declare guards
https://bugs.webkit.org/show_bug.cgi?id=221614
<rdar://problem/74396781>
Reviewed by David Kilzer.
Add -Wthread-safety to compile flags.
* Configurations/Base.xcconfig:
2021-04-16 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(?): Graphics: dropping a recording leaves behind a drop zone view
https://bugs.webkit.org/show_bug.cgi?id=224648
Reviewed by BJ Burg.
* UserInterface/Views/GraphicsTabContentView.js:
(WI.GraphicsTabContentView.prototype.initialLayout):
It appears that it's possible for re-entrancy issues in the `WI.View` system since the
`_didInitialLayout` flag isn't set until _after_ `initialLayout` returns, meaning that if
the logic inside `initialLayout` triggers a synchronous `layout` then that second `layout`
won't know that it's already in the middle of an `initialLayout`. In this case, showing the
`WI.GraphicsOverviewContentView` causes the navigation sidebar to be shown, which forces a
synchronous `layout` from handling `WI.Sidebar.Event.WidthDidChange`. For now, there's no
"rush" to show the `WI.GraphicsOverviewContentView` so we delay it by one event loop turn.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.dropZoneShouldAppearForDragEvent): Deleted.
(WI.CanvasContentView.prototype.dropZoneHandleDrop): Deleted.
There's no reason to have another `WI.DropZoneView` here since there's already one that
covers the entire tab.
2021-04-16 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: null is not an object (evaluating 'this._listeners.get')
https://bugs.webkit.org/show_bug.cgi?id=224651
Reviewed by BJ Burg.
* UserInterface/Base/Object.js:
(WI.Object.removeEventListener):
Add early-return checks just in case `_listeners` or `listenersForEventType` is falsy. While
ideally it would be the case that these would never be falsy, the logic of Web Inspector is
complex and far reaching, so better safe than sorry.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype._detach):
* UserInterface/Views/AuditTreeElement.js:
(WI.AuditTreeElement.prototype.ondetach):
* UserInterface/Views/BootstrapScriptTreeElement.js:
(WI.BootstrapScriptTreeElement.prototype.ondetach):
* UserInterface/Views/BreakpointTreeElement.js:
(WI.BreakpointTreeElement.prototype.ondetach):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype.ondetach):
* UserInterface/Views/FrameTreeElement.js:
(WI.FrameTreeElement.prototype.ondetach):
* UserInterface/Views/JavaScriptBreakpointTreeElement.js:
(WI.JavaScriptBreakpointTreeElement.prototype.ondetach):
* UserInterface/Views/LocalResourceOverrideTreeElement.js:
(WI.LocalResourceOverrideTreeElement.prototype.ondetach):
* UserInterface/Views/ShaderProgramTreeElement.js:
(WI.ShaderProgramTreeElement.prototype.ondetach):
* UserInterface/Views/WebSocketResourceTreeElement.js:
(WI.WebSocketResourceTreeElement.prototype.ondetach):
Add FIXME comments warning of this issue so that future changes can take it into account.
<https://webkit.org/b/224652> (Web Inspector: Tree Outlines: `ondetach` can be called without `onattach` ever being called)
2021-04-16 Devin Rousso <drousso@apple.com>
Web Inspector: Sources: don't show the create local override contextmenu if the navigation item is disabled
https://bugs.webkit.org/show_bug.cgi?id=224647
Reviewed by BJ Burg.
* UserInterface/Views/ResourceContentView.js:
(WI.ResourceContentView.prototype._populateCreateLocalResourceOverrideContextMenu):
2021-04-13 BJ Burg <bburg@apple.com>
Web Inspector: add setting to allow inspecting Web Inspector
https://bugs.webkit.org/show_bug.cgi?id=224082
<rdar://75695002>
Reviewed by Devin Rousso.
Instead of telling curious users to set the WebKitDeveloperExtras default,
expose an experimental setting that does the same thing.
* UserInterface/Base/Main.js:
(WI.loaded):
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
2021-04-06 BJ Burg <bburg@apple.com>
Web Inspector: remove duplicate Box Model section from Layout panel in Elements Tab
https://bugs.webkit.org/show_bug.cgi?id=224206
<rdar://problem/76235731>
Reviewed by Devin Rousso.
For now, remove it from Layout panel. It may go back there
when it is able to show used values. It currently only shows computed.
* UserInterface/Views/LayoutDetailsSidebarPanel.js:
(WI.LayoutDetailsSidebarPanel.prototype.initialLayout):
(WI.LayoutDetailsSidebarPanel.prototype.layout):
(WI.LayoutDetailsSidebarPanel.prototype.get minimumWidth): Deleted.
2021-04-06 Razvan Caliman <rcaliman@apple.com>
Web Inspector: Layout sidebar grid overlay color swatch tooltip shouldn't include "switch format" hint
https://bugs.webkit.org/show_bug.cgi?id=223418
<rdar://problem/75825793>
Reviewed by BJ Burg.
* UserInterface/Views/CSSGridSection.js:
(WI.CSSGridSection.prototype.layout):
* UserInterface/Views/InlineSwatch.js:
(WI.InlineSwatch):
(WI.InlineSwatch.prototype.set shiftClickColorEnabled):
(WI.InlineSwatch.prototype._updateSwatch):
(WI.InlineSwatch.prototype._allowChangingColorFormats):
2021-03-31 Patrick Angle <pangle@apple.com>
Web Inspector: Regression (r270134) Timeline recordings 2 and beyond do not show a timescale.
https://bugs.webkit.org/show_bug.cgi?id=222930
Reviewed by Devin Rousso.
When a new `TimelineOverview` is created, it calls `TimelineOverview.prototype._viewModeDidChange` inside the
constructor, which in turn called `updateLayout`. This was problematic in that a `TimelineRuler` would have
`sizeDidChange` invoked before it was attached to the DOM, which meant that there was no width to cache. Because
`sizeDidChange` is only invoked during the first layout and on resize events, the cached width is not updated
when the ruler is attached to the view hierarchy, having already performed an early initial layout.
This patch now checks if the `TimelineOverview` has performed its initial layout before updating the layout
inside `_viewModeDidChange`, which means that the initial layout on the child `TimelineRuler` will be done while
attached, thus producing a valid width value to cache.
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineRuler.prototype._viewModeDidChange):
2021-03-31 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Autocomplete experimental CSS Color values (hwb, lch, lab, color-mix, color-contrast)
https://bugs.webkit.org/show_bug.cgi?id=224010
<rdar://problem/76065217>
Reviewed by BJ Burg.
* UserInterface/Models/CSSKeywordCompletions.js:
2021-03-28 Sam Weinig <weinig@apple.com>
Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS, it seems like it is on for all ports
https://bugs.webkit.org/show_bug.cgi?id=223810
Reviewed by Simon Fraser.
* Versions/Inspector-iOS-14.0.json:
* Versions/Inspector-iOS-14.5.json:
Update for removed ENABLE_INDEXED_DATABASE conditional.
2021-03-26 Jessie Berlin <jberlin@webkit.org>
Update the BEFORE/SINCE, SYSTEM_VERSION_PREFIX, and MACOSX_DEPLOYMENT_TARGET flags
https://bugs.webkit.org/show_bug.cgi?id=223779
Reviewed by Tim Horton.
* Configurations/DebugRelease.xcconfig:
* Configurations/Version.xcconfig:
2021-03-25 Jessie Berlin <jberlin@webkit.org>
Remove 10.13 DEPLOYMENT_TARGETs and SYSTEM_VERSION_PREFIXs
https://bugs.webkit.org/show_bug.cgi?id=223765
Reviewed by Tim Horton.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/Version.xcconfig:
2021-03-25 Razvan Caliman <rcaliman@apple.com>
REGRESSION (r270134) Web Inspector: Audit: Results are stacked on top of each other.
https://bugs.webkit.org/show_bug.cgi?id=223381
<rdar://problem/75528374>
Reviewed by Devin Rousso.
Ensure pre-existing `ContentView`s are removed when navigating back/forward
even when the incoming `ContentView` is already attached.
For example, `AuditTestContentView` instances for individual tests are already attached
when shown as part of a test group `AuditTestGroupContentView`.
Navigating from the group to the individual test view must remove the group view.
* UserInterface/Views/ContentViewContainer.js:
(WI.ContentViewContainer.prototype.showBackForwardEntryForIndex):
2021-03-24 Razvan Caliman <rcaliman@apple.com>
Web Inspector: REGRESSION (r269359): Timelines: TypeError: this.deselect is not a function
https://bugs.webkit.org/show_bug.cgi?id=223698
<rdar://problem/75790983>
Reviewed by BJ Burg.
Ensure individual timeline views can be closed to return to the Timelines overview.
* UserInterface/Views/TimelineTreeElement.js:
(WI.TimelineTreeElement.prototype._showCloseButton):
2021-03-19 BJ Burg <bburg@apple.com>
Uncaught Exception: RangeError: Array size is not a small enough positive integer.
https://bugs.webkit.org/show_bug.cgi?id=223532
<rdar://problem/75635080>
Reviewed by Devin Rousso.
This patch fixes the broken CPU instrument when viewing a JSON timeline recordng.
This exception is thrown when viewing a timeline recording that has been
imported from JSON file. Aside from the exception, the code is functionally
broken in this situation since passing a negative number to Array() doesn't work.
I tested this change manually and selection ranges now behave as expected, and
have not regressed in other instruments / UI.
* UserInterface/Views/CPUTimelineView.js:
Based on my investigation, the visibleEndTime is incorrectly computed when
showing a JSON timeline recording because the currentTime property is always '0'.
If this is the case, then let's assume that the entire range should be displayed.
== Rolled over to ChangeLog-2021-03-18 ==