Web Inspector: add links to reference pages
https://bugs.webkit.org/show_bug.cgi?id=206309
Reviewed by Timothy Hatcher.
* UserInterface/Base/Main.js:
(WI._handleDeviceSettingsToolbarButtonClicked):
(WI.createReferencePageLink): Added.
* UserInterface/Views/Main.css:
(.reference-page-link): Added.
(.reference-page-link:active): Added.
(@media (-webkit-device-pixel-ratio: 1) .reference-page-link): Added.
(@media (prefers-color-scheme: dark) .reference-page-link): Added.
(@media (prefers-color-scheme: dark) .reference-page-link:active): Added.
(.device-settings-content):
(.device-settings-content > table): Added.
(.device-settings-content > table > tr > td:first-child): Added.
(.device-settings-content > .reference-page-link-container): Added.
(body[dir=ltr] .device-settings-content > .reference-page-link-container): Added.
(body[dir=rtl] .device-settings-content > .reference-page-link-container): Added.
(.device-settings-content > tr > td:first-child): Deleted.
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.async createBootstrapScript):
* UserInterface/Controllers/BreakpointPopoverController.js:
(WI.BreakpointPopoverController.prototype._createPopoverContent):
(WI.BreakpointPopoverController.prototype._popoverActionsCreateAddActionButton):
* UserInterface/Views/BreakpointPopoverController.css:
(.popover .edit-breakpoint-popover-content > table > tr > td.options): Added.
(.popover .edit-breakpoint-popover-content > table > tr > td.options > .reference-page-link-container): Added.
(body[dir=ltr] .popover .edit-breakpoint-popover-content > table > tr > td.options > .reference-page-link-container): Added.
(body[dir=rtl] .popover .edit-breakpoint-popover-content > table > tr > td.options > .reference-page-link-container): Added.
(body[dir=ltr] .popover .edit-breakpoint-popover-content .reference-page-link-container): Added.
(body[dir=rtl] .popover .edit-breakpoint-popover-content .reference-page-link-container): Added.
* UserInterface/Views/EventBreakpointPopover.js:
(WI.EventBreakpointPopover.prototype.show):
* UserInterface/Views/EventBreakpointPopover.css:
(.popover .event-breakpoint-content .reference-page-link-container): Added.
* UserInterface/Views/URLBreakpointPopover.js:
(WI.URLBreakpointPopover.prototype.show):
* UserInterface/Views/URLBreakpointPopover.css:
(.popover .url-breakpoint-content .reference-page-link-container): Added.
* UserInterface/Views/LocalResourceOverridePopover.js:
(WI.LocalResourceOverridePopover.prototype.show):
* UserInterface/Views/LocalResourceOverridePopover.css:
(.popover .local-resource-override-popover-content .reference-page-link-container): Added.
(body[dir=ltr] .popover .local-resource-override-popover-content .reference-page-link-container): Added.
(body[dir=rtl] .popover .local-resource-override-popover-content .reference-page-link-container): Added.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype.initialLayout):
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
(WI.SettingsTabContentView.prototype._createElementsSettingsView):
(WI.SettingsTabContentView.prototype._createSourcesSettingsView):
(WI.SettingsTabContentView.prototype._createConsoleSettingsView):
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
(WI.SettingsTabContentView.prototype._createReferenceLink): Added.
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.tab.settings): Added.
(.content-view.tab.settings .navigation-bar): Added.
(.content-view.tab.settings .navigation-bar.invisible): Added.
(.content-view.tab.settings .navigation-bar .item.radio.button.text-only): Added.
(.content-view.tab.settings .navigation-bar .item.radio.button.text-only:before): Added.
(.content-view.tab.settings .navigation-bar .item.radio.button.text-only.selected): Added.
(.content-view.tab.settings > .settings-view): Added.
(.content-view.tab.settings > .settings-view > .separator): Added.
(.content-view.tab.settings > .settings-view > .container): Added.
(.content-view.tab.settings > .settings-view > .container.hidden): Added.
(.content-view.tab.settings > .settings-view > .container-centered): Added.
(.content-view.tab.settings > .settings-view > .container button): Added.
(.content-view.tab.settings > .settings-view > .container > .title): Added.
(.content-view.tab.settings > .settings-view > .container > .editor-group): Added.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor): Added.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor:first-child > *): Added.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input): Added.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]): Added.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor select): Added.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="number"]): Added.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="text"]): Added.
(.content-view.tab.settings > .settings-view > .container.reference): Added.
(.content-view.tab.settings > .settings-view > .container.reference > .reference-page-link): Added.
(.content-view.tab.settings > .settings-view > .container.reference > .reference-page-link > .go-to-arrow): Added.
(.content-view.settings .navigation-bar): Deleted.
(.content-view.settings .navigation-bar.invisible): Deleted.
(.content-view.settings .navigation-bar .item.radio.button.text-only): Deleted.
(.content-view.settings .navigation-bar .item.radio.button.text-only:before): Deleted.
(.content-view.settings .navigation-bar .item.radio.button.text-only.selected): Deleted.
(.content-view.settings > .settings-view): Deleted.
(.content-view.settings > .settings-view > .separator): Deleted.
(.content-view.settings > .settings-view > .container): Deleted.
(.content-view.settings > .settings-view > .container.hidden): Deleted.
(.content-view.settings > .settings-view > .container-centered): Deleted.
(.content-view.settings > .settings-view > .container button): Deleted.
(.content-view.settings > .settings-view > .container > .title): Deleted.
(.content-view.settings > .settings-view > .container > .editor-group): Deleted.
(.content-view.settings > .settings-view > .container > .editor-group > .editor): Deleted.
(.content-view.settings > .settings-view > .container > .editor-group > .editor:first-child > *): Deleted.
(.content-view.settings > .settings-view > .container > .editor-group > .editor input): Deleted.
(.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]): Deleted.
(.content-view.settings > .settings-view > .container > .editor-group > .editor select): Deleted.
(.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]): Deleted.
(.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="text"]): Deleted.
(@media (prefers-color-scheme: dark) .content-view.settings .navigation-bar): Deleted.
(@media (prefers-color-scheme: dark) .content-view.settings .navigation-bar .item.radio.button.text-only.selected): Deleted.
* UserInterface/Views/BlackboxSettingsView.js:
(WI.BlackboxSettingsView.prototype.initialLayout):
* UserInterface/Views/BlackboxSettingsView.css:
(.settings-view.blackbox > table > tbody td.url): Added.
(.settings-view.blackbox > table > tbody td.url > .CodeMirror):
* Localizations/en.lproj/localizedStrings.js:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@254730 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebInspectorUI/ChangeLog b/Source/WebInspectorUI/ChangeLog
index 1bdfefb..4454ec2 100644
--- a/Source/WebInspectorUI/ChangeLog
+++ b/Source/WebInspectorUI/ChangeLog
@@ -1,5 +1,121 @@
2020-01-16 Devin Rousso <drousso@apple.com>
+ Web Inspector: add links to reference pages
+ https://bugs.webkit.org/show_bug.cgi?id=206309
+
+ Reviewed by Timothy Hatcher.
+
+ * UserInterface/Base/Main.js:
+ (WI._handleDeviceSettingsToolbarButtonClicked):
+ (WI.createReferencePageLink): Added.
+ * UserInterface/Views/Main.css:
+ (.reference-page-link): Added.
+ (.reference-page-link:active): Added.
+ (@media (-webkit-device-pixel-ratio: 1) .reference-page-link): Added.
+ (@media (prefers-color-scheme: dark) .reference-page-link): Added.
+ (@media (prefers-color-scheme: dark) .reference-page-link:active): Added.
+ (.device-settings-content):
+ (.device-settings-content > table): Added.
+ (.device-settings-content > table > tr > td:first-child): Added.
+ (.device-settings-content > .reference-page-link-container): Added.
+ (body[dir=ltr] .device-settings-content > .reference-page-link-container): Added.
+ (body[dir=rtl] .device-settings-content > .reference-page-link-container): Added.
+ (.device-settings-content > tr > td:first-child): Deleted.
+
+ * UserInterface/Controllers/NetworkManager.js:
+ (WI.NetworkManager.prototype.async createBootstrapScript):
+
+ * UserInterface/Controllers/BreakpointPopoverController.js:
+ (WI.BreakpointPopoverController.prototype._createPopoverContent):
+ (WI.BreakpointPopoverController.prototype._popoverActionsCreateAddActionButton):
+ * UserInterface/Views/BreakpointPopoverController.css:
+ (.popover .edit-breakpoint-popover-content > table > tr > td.options): Added.
+ (.popover .edit-breakpoint-popover-content > table > tr > td.options > .reference-page-link-container): Added.
+ (body[dir=ltr] .popover .edit-breakpoint-popover-content > table > tr > td.options > .reference-page-link-container): Added.
+ (body[dir=rtl] .popover .edit-breakpoint-popover-content > table > tr > td.options > .reference-page-link-container): Added.
+ (body[dir=ltr] .popover .edit-breakpoint-popover-content .reference-page-link-container): Added.
+ (body[dir=rtl] .popover .edit-breakpoint-popover-content .reference-page-link-container): Added.
+ * UserInterface/Views/EventBreakpointPopover.js:
+ (WI.EventBreakpointPopover.prototype.show):
+ * UserInterface/Views/EventBreakpointPopover.css:
+ (.popover .event-breakpoint-content .reference-page-link-container): Added.
+ * UserInterface/Views/URLBreakpointPopover.js:
+ (WI.URLBreakpointPopover.prototype.show):
+ * UserInterface/Views/URLBreakpointPopover.css:
+ (.popover .url-breakpoint-content .reference-page-link-container): Added.
+
+ * UserInterface/Views/LocalResourceOverridePopover.js:
+ (WI.LocalResourceOverridePopover.prototype.show):
+ * UserInterface/Views/LocalResourceOverridePopover.css:
+ (.popover .local-resource-override-popover-content .reference-page-link-container): Added.
+ (body[dir=ltr] .popover .local-resource-override-popover-content .reference-page-link-container): Added.
+ (body[dir=rtl] .popover .local-resource-override-popover-content .reference-page-link-container): Added.
+
+ * UserInterface/Views/SettingsTabContentView.js:
+ (WI.SettingsTabContentView.prototype.initialLayout):
+ (WI.SettingsTabContentView.prototype._createGeneralSettingsView):
+ (WI.SettingsTabContentView.prototype._createElementsSettingsView):
+ (WI.SettingsTabContentView.prototype._createSourcesSettingsView):
+ (WI.SettingsTabContentView.prototype._createConsoleSettingsView):
+ (WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
+ (WI.SettingsTabContentView.prototype._createReferenceLink): Added.
+ * UserInterface/Views/SettingsTabContentView.css:
+ (.content-view.tab.settings): Added.
+ (.content-view.tab.settings .navigation-bar): Added.
+ (.content-view.tab.settings .navigation-bar.invisible): Added.
+ (.content-view.tab.settings .navigation-bar .item.radio.button.text-only): Added.
+ (.content-view.tab.settings .navigation-bar .item.radio.button.text-only:before): Added.
+ (.content-view.tab.settings .navigation-bar .item.radio.button.text-only.selected): Added.
+ (.content-view.tab.settings > .settings-view): Added.
+ (.content-view.tab.settings > .settings-view > .separator): Added.
+ (.content-view.tab.settings > .settings-view > .container): Added.
+ (.content-view.tab.settings > .settings-view > .container.hidden): Added.
+ (.content-view.tab.settings > .settings-view > .container-centered): Added.
+ (.content-view.tab.settings > .settings-view > .container button): Added.
+ (.content-view.tab.settings > .settings-view > .container > .title): Added.
+ (.content-view.tab.settings > .settings-view > .container > .editor-group): Added.
+ (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor): Added.
+ (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor:first-child > *): Added.
+ (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input): Added.
+ (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]): Added.
+ (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor select): Added.
+ (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="number"]): Added.
+ (.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="text"]): Added.
+ (.content-view.tab.settings > .settings-view > .container.reference): Added.
+ (.content-view.tab.settings > .settings-view > .container.reference > .reference-page-link): Added.
+ (.content-view.tab.settings > .settings-view > .container.reference > .reference-page-link > .go-to-arrow): Added.
+ (.content-view.settings .navigation-bar): Deleted.
+ (.content-view.settings .navigation-bar.invisible): Deleted.
+ (.content-view.settings .navigation-bar .item.radio.button.text-only): Deleted.
+ (.content-view.settings .navigation-bar .item.radio.button.text-only:before): Deleted.
+ (.content-view.settings .navigation-bar .item.radio.button.text-only.selected): Deleted.
+ (.content-view.settings > .settings-view): Deleted.
+ (.content-view.settings > .settings-view > .separator): Deleted.
+ (.content-view.settings > .settings-view > .container): Deleted.
+ (.content-view.settings > .settings-view > .container.hidden): Deleted.
+ (.content-view.settings > .settings-view > .container-centered): Deleted.
+ (.content-view.settings > .settings-view > .container button): Deleted.
+ (.content-view.settings > .settings-view > .container > .title): Deleted.
+ (.content-view.settings > .settings-view > .container > .editor-group): Deleted.
+ (.content-view.settings > .settings-view > .container > .editor-group > .editor): Deleted.
+ (.content-view.settings > .settings-view > .container > .editor-group > .editor:first-child > *): Deleted.
+ (.content-view.settings > .settings-view > .container > .editor-group > .editor input): Deleted.
+ (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]): Deleted.
+ (.content-view.settings > .settings-view > .container > .editor-group > .editor select): Deleted.
+ (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]): Deleted.
+ (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="text"]): Deleted.
+ (@media (prefers-color-scheme: dark) .content-view.settings .navigation-bar): Deleted.
+ (@media (prefers-color-scheme: dark) .content-view.settings .navigation-bar .item.radio.button.text-only.selected): Deleted.
+ * UserInterface/Views/BlackboxSettingsView.js:
+ (WI.BlackboxSettingsView.prototype.initialLayout):
+ * UserInterface/Views/BlackboxSettingsView.css:
+ (.settings-view.blackbox > table > tbody td.url): Added.
+ (.settings-view.blackbox > table > tbody td.url > .CodeMirror):
+
+ * Localizations/en.lproj/localizedStrings.js:
+
+2020-01-16 Devin Rousso <drousso@apple.com>
+
Web Inspector: show the device settings menu when Web Inspector's debug mode is enabled
https://bugs.webkit.org/show_bug.cgi?id=206311
diff --git a/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js b/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
index f5bc8eb..038e065 100644
--- a/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
+++ b/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
@@ -134,6 +134,7 @@
localizedStrings["Anonymous Script %d"] = "Anonymous Script %d";
localizedStrings["Anonymous Scripts"] = "Anonymous Scripts";
localizedStrings["Anonymous Style Sheet %d"] = "Anonymous Style Sheet %d";
+localizedStrings["Anonymous Style Sheets"] = "Anonymous Style Sheets";
localizedStrings["Application Cache"] = "Application Cache";
/* Approximate count of events */
localizedStrings["Approximate Number"] = "~%s";
@@ -745,6 +746,7 @@
localizedStrings["Mixed"] = "Mixed";
localizedStrings["Modifications made here will take effect on the next load of any page or sub-frame."] = "Modifications made here will take effect on the next load of any page or sub-frame.";
localizedStrings["Module Code"] = "Module Code";
+localizedStrings["More information is available at <https://webkit.org/web-inspector/inspector-bootstrap-script/>."] = "More information is available at <https://webkit.org/web-inspector/inspector-bootstrap-script/>.";
localizedStrings["Multi-Entry"] = "Multi-Entry";
localizedStrings["Name"] = "Name";
localizedStrings["Network"] = "Network";
@@ -1297,6 +1299,7 @@
localizedStrings["Watch Expressions"] = "Watch Expressions";
localizedStrings["Waterfall"] = "Waterfall";
localizedStrings["Web Inspector"] = "Web Inspector";
+localizedStrings["Web Inspector Reference"] = "Web Inspector Reference";
localizedStrings["Web Page"] = "Web Page";
localizedStrings["WebKit Threads"] = "WebKit Threads";
localizedStrings["WebP"] = "WebP";
diff --git a/Source/WebInspectorUI/UserInterface/Base/Main.js b/Source/WebInspectorUI/UserInterface/Base/Main.js
index 71650d3..8271e13 100644
--- a/Source/WebInspectorUI/UserInterface/Base/Main.js
+++ b/Source/WebInspectorUI/UserInterface/Base/Main.js
@@ -2101,10 +2101,12 @@
WI._deviceSettingsPopover.present(calculateTargetFrame(), preferredEdges);
};
- let contentElement = document.createElement("table");
+ let contentElement = document.createElement("div");
contentElement.classList.add("device-settings-content");
- let userAgentRow = contentElement.appendChild(document.createElement("tr"));
+ let table = contentElement.appendChild(document.createElement("table"));
+
+ let userAgentRow = table.appendChild(document.createElement("tr"));
let userAgentTitle = userAgentRow.appendChild(document.createElement("td"));
userAgentTitle.textContent = WI.UIString("User Agent:");
@@ -2232,7 +2234,7 @@
if (!group.columns.some((column) => column.some((item) => item.setting)))
continue;
- let settingsGroupRow = contentElement.appendChild(document.createElement("tr"));
+ let settingsGroupRow = table.appendChild(document.createElement("tr"));
let settingsGroupTitle = settingsGroupRow.appendChild(document.createElement("td"));
settingsGroupTitle.textContent = group.name;
@@ -2251,6 +2253,8 @@
}
}
+ contentElement.appendChild(WI.createReferencePageLink("device-settings"));
+
WI._deviceSettingsPopover.presentNewContentWithFrame(contentElement, calculateTargetFrame(), preferredEdges);
};
@@ -2823,6 +2827,23 @@
return containerElement;
};
+WI.createReferencePageLink = function(page, fragment)
+{
+ let url = "https://webkit.org/web-inspector/" + page + "/";
+ if (fragment)
+ url += "#" + fragment;
+
+ let wrapper = document.createElement("span");
+ wrapper.className = "reference-page-link-container";
+
+ let link = wrapper.appendChild(document.createElement("a"));
+ link.className = "reference-page-link";
+ link.href = link.title = url;
+ link.textContent = "?";
+
+ return wrapper;
+};
+
WI.createGoToArrowButton = function()
{
var button = document.createElement("button");
diff --git a/Source/WebInspectorUI/UserInterface/Controllers/BreakpointPopoverController.js b/Source/WebInspectorUI/UserInterface/Controllers/BreakpointPopoverController.js
index f4d0c1c..1011e5a 100644
--- a/Source/WebInspectorUI/UserInterface/Controllers/BreakpointPopoverController.js
+++ b/Source/WebInspectorUI/UserInterface/Controllers/BreakpointPopoverController.js
@@ -209,8 +209,12 @@
let optionsRow = this._popoverOptionsRowElement = table.appendChild(document.createElement("tr"));
if (!this._breakpoint.actions.length)
optionsRow.classList.add(WI.BreakpointPopoverController.HiddenStyleClassName);
+
let optionsHeader = optionsRow.appendChild(document.createElement("th"));
+
let optionsData = optionsRow.appendChild(document.createElement("td"));
+ optionsData.className = "options";
+
let optionsLabel = optionsHeader.appendChild(document.createElement("label"));
let optionsCheckbox = this._popoverOptionsCheckboxElement = optionsData.appendChild(document.createElement("input"));
let optionsCheckboxLabel = optionsData.appendChild(document.createElement("label"));
@@ -222,6 +226,8 @@
optionsCheckboxLabel.setAttribute("for", optionsCheckbox.id);
optionsCheckboxLabel.textContent = WI.UIString("Automatically continue after evaluating");
+ optionsData.appendChild(WI.createReferencePageLink("javascript-breakpoints", "configuration"));
+
this._popoverContentElement.appendChild(checkboxLabel);
this._popoverContentElement.appendChild(table);
}
@@ -282,6 +288,8 @@
let addActionButton = this._actionsContainer.appendChild(document.createElement("button"));
addActionButton.textContent = WI.UIString("Add Action");
addActionButton.addEventListener("click", this._popoverActionsAddActionButtonClicked.bind(this));
+
+ this._actionsContainer.appendChild(WI.createReferencePageLink("javascript-breakpoints", "configuration"));
}
_popoverActionsAddActionButtonClicked(event)
diff --git a/Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js b/Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js
index 5700051..fbf1d87 100644
--- a/Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js
+++ b/Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js
@@ -315,8 +315,10 @@
* ${WI.UIString("Some examples of ways to use this script include (but are not limited to):")}
* - ${WI.UIString("overriding built-in functions to log call traces or add `debugger` statements")}
* - ${WI.UIString("ensuring that common debugging functions are available on every page via the Console")}
+ *
+ * ${WI.UIString("More information is available at <https://webkit.org/web-inspector/inspector-bootstrap-script/>.")}
*/
-`;
+`.trimStart();
}
const target = null;
diff --git a/Source/WebInspectorUI/UserInterface/Views/BlackboxSettingsView.css b/Source/WebInspectorUI/UserInterface/Views/BlackboxSettingsView.css
index 25778be..78dad7c 100644
--- a/Source/WebInspectorUI/UserInterface/Views/BlackboxSettingsView.css
+++ b/Source/WebInspectorUI/UserInterface/Views/BlackboxSettingsView.css
@@ -68,9 +68,14 @@
text-align: start;
}
+.settings-view.blackbox > table > tbody td.url {
+ background-color: var(--background-color-content);
+}
+
.settings-view.blackbox > table > tbody td.url > .CodeMirror {
min-width: 110px;
height: auto;
+ background-color: transparent;
}
.settings-view.blackbox > table :matches(th, td):matches(.case-sensitive, .remove-blackbox) {
diff --git a/Source/WebInspectorUI/UserInterface/Views/BlackboxSettingsView.js b/Source/WebInspectorUI/UserInterface/Views/BlackboxSettingsView.js
index 19c6744..90a03d0 100644
--- a/Source/WebInspectorUI/UserInterface/Views/BlackboxSettingsView.js
+++ b/Source/WebInspectorUI/UserInterface/Views/BlackboxSettingsView.js
@@ -53,10 +53,10 @@
{
super.initialLayout();
- let patternBlackboxExplanationElement = this.element.appendChild(document.createElement("p"));
+ let patternBlackboxExplanationElement = this.element.insertBefore(document.createElement("p"), this.element.lastChild);
patternBlackboxExplanationElement.textContent = WI.UIString("If the URL of any script matches one of the regular expression patterns below, any pauses that would have happened in that script will be deferred until execution has continued to outside of that script.");
- let table = this.element.appendChild(document.createElement("table"));
+ let table = this.element.insertBefore(document.createElement("table"), this.element.lastChild);
let tableHead = table.appendChild(document.createElement("thead"));
@@ -100,7 +100,7 @@
this._addRow(null);
});
- let individualBlackboxExplanationElement = this.element.appendChild(document.createElement("p"));
+ let individualBlackboxExplanationElement = this.element.insertBefore(document.createElement("p"), this.element.lastChild);
let blackboxIconElement = WI.ImageUtilities.useSVGSymbol("Images/Hide.svg#currentColor", "toggle-script-blackbox", WI.UIString("Ignore script when debugging"));
String.format(WI.UIString("Scripts can also be individually blackboxed by clicking on the %s icon that is shown on hover."), [blackboxIconElement], String.standardFormatters, individualBlackboxExplanationElement, (a, b) => {
a.append(b);
diff --git a/Source/WebInspectorUI/UserInterface/Views/BreakpointPopoverController.css b/Source/WebInspectorUI/UserInterface/Views/BreakpointPopoverController.css
index 0db62e1..215163c 100644
--- a/Source/WebInspectorUI/UserInterface/Views/BreakpointPopoverController.css
+++ b/Source/WebInspectorUI/UserInterface/Views/BreakpointPopoverController.css
@@ -55,6 +55,30 @@
padding-left: 5px;
}
+.popover .edit-breakpoint-popover-content > table > tr > td.options {
+ position: relative;
+}
+
+.popover .edit-breakpoint-popover-content > table > tr > td.options > .reference-page-link-container {
+ position: absolute;
+}
+
+body[dir=ltr] .popover .edit-breakpoint-popover-content > table > tr > td.options > .reference-page-link-container {
+ right: 0;
+}
+
+body[dir=rtl] .popover .edit-breakpoint-popover-content > table > tr > td.options > .reference-page-link-container {
+ left: 0;
+}
+
+body[dir=ltr] .popover .edit-breakpoint-popover-content .reference-page-link-container {
+ float: right;
+}
+
+body[dir=rtl] .popover .edit-breakpoint-popover-content .reference-page-link-container {
+ float: left;
+}
+
.edit-breakpoint-popover-condition {
width: 100%;
padding: 4px 0 2px;
diff --git a/Source/WebInspectorUI/UserInterface/Views/EventBreakpointPopover.css b/Source/WebInspectorUI/UserInterface/Views/EventBreakpointPopover.css
index c7fb215..9770814 100644
--- a/Source/WebInspectorUI/UserInterface/Views/EventBreakpointPopover.css
+++ b/Source/WebInspectorUI/UserInterface/Views/EventBreakpointPopover.css
@@ -37,3 +37,8 @@
.popover .event-breakpoint-content > input::placeholder {
font-family: system-ui;
}
+
+.popover .event-breakpoint-content .reference-page-link-container {
+ -webkit-margin-start: 0.5em;
+ vertical-align: -1px;
+}
\ No newline at end of file
diff --git a/Source/WebInspectorUI/UserInterface/Views/EventBreakpointPopover.js b/Source/WebInspectorUI/UserInterface/Views/EventBreakpointPopover.js
index fe12746..6a1e924 100644
--- a/Source/WebInspectorUI/UserInterface/Views/EventBreakpointPopover.js
+++ b/Source/WebInspectorUI/UserInterface/Views/EventBreakpointPopover.js
@@ -96,6 +96,8 @@
});
});
+ contentElement.appendChild(WI.createReferencePageLink("event-breakpoints", "global-event-breakpoints"));
+
this.content = contentElement;
this._presentOverTargetElement();
diff --git a/Source/WebInspectorUI/UserInterface/Views/LocalResourceOverridePopover.css b/Source/WebInspectorUI/UserInterface/Views/LocalResourceOverridePopover.css
index a5735e4..9652016 100644
--- a/Source/WebInspectorUI/UserInterface/Views/LocalResourceOverridePopover.css
+++ b/Source/WebInspectorUI/UserInterface/Views/LocalResourceOverridePopover.css
@@ -98,6 +98,18 @@
margin-top: 8px;
}
+.popover .local-resource-override-popover-content .reference-page-link-container {
+ margin-top: 6px;
+}
+
+body[dir=ltr] .popover .local-resource-override-popover-content .reference-page-link-container {
+ float: right;
+}
+
+body[dir=rtl] .popover .local-resource-override-popover-content .reference-page-link-container {
+ float: left;
+}
+
@media (prefers-color-scheme: dark) {
.popover .local-resource-override-popover-content > table > tr > th {
color: var(--text-color-secondary);
diff --git a/Source/WebInspectorUI/UserInterface/Views/LocalResourceOverridePopover.js b/Source/WebInspectorUI/UserInterface/Views/LocalResourceOverridePopover.js
index a471b6d..facd92a 100644
--- a/Source/WebInspectorUI/UserInterface/Views/LocalResourceOverridePopover.js
+++ b/Source/WebInspectorUI/UserInterface/Views/LocalResourceOverridePopover.js
@@ -288,6 +288,8 @@
this._headersDataGrid.startEditingNode(newNode);
});
+ headersData.appendChild(WI.createReferencePageLink("local-overrides", "configuring-local-overrides"));
+
let incrementStatusCode = () => {
let x = parseInt(this._statusCodeCodeMirror.getValue());
if (isNaN(x))
diff --git a/Source/WebInspectorUI/UserInterface/Views/Main.css b/Source/WebInspectorUI/UserInterface/Views/Main.css
index 9f105f1..ce31af4 100644
--- a/Source/WebInspectorUI/UserInterface/Views/Main.css
+++ b/Source/WebInspectorUI/UserInterface/Views/Main.css
@@ -433,13 +433,59 @@
--checkerboard-dark-square: hsl(0, 0%, 95%);
}
+.reference-page-link {
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ width: 20px;
+ height: 20px;
+ font-size: 14px;
+ line-height: 18px;
+ color: var(--text-color);
+ text-decoration: none;
+ background-color: var(--button-background-color);
+ border: var(--stroke-width) solid var(--border-color);
+ border-radius: 50%;
+ box-shadow: 0 var(--stroke-width) 1px var(--border-color);
+ cursor: default;
+
+ --stroke-width: 0.5px;
+}
+
+.reference-page-link:active {
+ background-color: var(--button-background-color-active);
+}
+
+@media (-webkit-device-pixel-ratio: 1) {
+ .reference-page-link {
+ -webkit-padding-start: 1px;
+
+ --stroke-width: 1px;
+ }
+}
+
+@media (prefers-color-scheme: dark) {
+ .reference-page-link {
+ border: var(--stroke-width) solid hsl(0, 0%, 20%);
+ box-shadow: 0 var(--stroke-width) 1px hsl(0, 0%, 20%);
+ }
+
+ .reference-page-link:active {
+ background-color: hsl(0, 0%, 50%);
+ }
+}
+
.device-settings-content {
+ position: relative;
padding: 0 4px;
+}
+
+.device-settings-content > table {
border-collapse: separate;
border-spacing: 4px 8px;
}
-.device-settings-content > tr > td:first-child {
+.device-settings-content > table > tr > td:first-child {
text-align: end;
vertical-align: top;
}
@@ -479,6 +525,19 @@
-webkit-margin-end: 4px;
}
+.device-settings-content > .reference-page-link-container {
+ position: absolute;
+ bottom: 0.5em;
+}
+
+body[dir=ltr] .device-settings-content > .reference-page-link-container {
+ right: 0.5em;
+}
+
+body[dir=rtl] .device-settings-content > .reference-page-link-container {
+ left: 0.5em;
+}
+
@media (prefers-color-scheme: dark) {
.go-to-arrow {
filter: invert();
diff --git a/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.css b/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.css
index 345d7b9..c270197 100644
--- a/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.css
+++ b/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.css
@@ -24,87 +24,97 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-.content-view.settings .navigation-bar {
- background-color: white;
+.content-view.tab.settings {
+ overflow-y: auto;
}
-.content-view.settings .navigation-bar.invisible {
+.content-view.tab.settings .navigation-bar {
+ position: sticky;
+ top: 0;
+ z-index: var(--z-index-header);
+ background-color: var(--background-color-content);
+}
+
+.content-view.tab.settings .navigation-bar.invisible {
visibility: hidden;
}
-.content-view.settings .navigation-bar .item.radio.button.text-only {
+.content-view.tab.settings .navigation-bar .item.radio.button.text-only {
color: inherit;
background-color: inherit;
}
-.content-view.settings .navigation-bar .item.radio.button.text-only:before {
+.content-view.tab.settings .navigation-bar .item.radio.button.text-only:before {
display: none;
}
-.content-view.settings .navigation-bar .item.radio.button.text-only.selected {
- color: var(--selected-background-color)
+.content-view.tab.settings .navigation-bar .item.radio.button.text-only.selected {
+ color: var(--glyph-color-active);
}
-.content-view.settings > .settings-view {
- height: 100%;
+.content-view.tab.settings > .settings-view {
+ display: flex;
+ flex-direction: column;
+ min-height: calc(100% - var(--navigation-bar-height));
+ padding-bottom: 1em;
+ background-color: var(--background-color-alternate);
overflow-y: auto;
- padding-bottom: calc(var(--console-prompt-min-height) + 10px);
}
-.content-view.settings > .settings-view > .separator {
+.content-view.tab.settings > .settings-view > .separator {
height: 1em;
}
-.content-view.settings > .settings-view > .container {
+.content-view.tab.settings > .settings-view > .container {
display: flex;
margin-top: 1em;
font-size: 13px;
}
-.content-view.settings > .settings-view > .container.hidden {
+.content-view.tab.settings > .settings-view > .container.hidden {
display: none;
}
-.content-view.settings > .settings-view > .container-centered {
+.content-view.tab.settings > .settings-view > .container-centered {
display: block;
text-align: center;
}
-.content-view.settings > .settings-view > .container button {
+.content-view.tab.settings > .settings-view > .container button {
-webkit-margin-end: 4px;
font-size: inherit;
}
-.content-view.settings > .settings-view > .container > .title {
+.content-view.tab.settings > .settings-view > .container > .title {
width: 50%;
-webkit-margin-end: 6px;
text-align: end;
}
-.content-view.settings > .settings-view > .container > .editor-group {
+.content-view.tab.settings > .settings-view > .container > .editor-group {
display: flex;
flex-direction: column;
}
-.content-view.settings > .settings-view > .container > .editor-group > .editor {
+.content-view.tab.settings > .settings-view > .container > .editor-group > .editor {
--settings-editor-child-margin-top: 0;
}
-.content-view.settings > .settings-view > .container > .editor-group > .editor:first-child > * {
+.content-view.tab.settings > .settings-view > .container > .editor-group > .editor:first-child > * {
margin-top: var(--settings-editor-child-margin-top);
}
-.content-view.settings > .settings-view > .container > .editor-group > .editor input {
+.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input {
font-size: inherit;
}
-.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"] {
+.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"] {
-webkit-margin-end: 4px;
/* Vertically align <select> with the group title text. */
font-size: 16px;
}
-.content-view.settings > .settings-view > .container > .editor-group > .editor select {
+.content-view.tab.settings > .settings-view > .container > .editor-group > .editor select {
/*
To set the font-size of <select> to be exactly 13px, it needs to be set to 16px.
Setting the font-size to 13px actually sets it to 11px.
@@ -115,7 +125,7 @@
--settings-editor-child-margin-top: -2px;
}
-.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"] {
+.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="number"] {
max-width: 48px;
-webkit-margin-start: 2px;
-webkit-margin-end: 5px;
@@ -128,7 +138,7 @@
--settings-editor-child-margin-top: -2px;
}
-.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="text"] {
+.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="text"] {
padding-top: 0;
padding-bottom: 0;
vertical-align: 1px;
@@ -137,12 +147,19 @@
--settings-editor-child-margin-top: -2px;
}
-@media (prefers-color-scheme: dark) {
- .content-view.settings .navigation-bar {
- background-color: var(--background-color-content);
- }
+.content-view.tab.settings > .settings-view > .container.reference {
+ display: flex;
+ justify-content: center;
+ align-items: flex-end;
+ flex-grow: 1;
+}
- .content-view.settings .navigation-bar .item.radio.button.text-only.selected {
- color: var(--glyph-color-active);
- }
+.content-view.tab.settings > .settings-view > .container.reference > a {
+ -webkit-margin-start: 16px; /* Balance the size of `.go-to-arrow` so that the text is visually centered. */
+ color: var(--text-color-secondary);
+}
+
+.content-view.tab.settings > .settings-view > .container.reference > a > .go-to-arrow {
+ margin: 0;
+ vertical-align: -0.25em;
}
diff --git a/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js b/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js
index 4023ff5..03e5452 100644
--- a/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js
+++ b/Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js
@@ -180,6 +180,7 @@
if (WI.DebuggerManager.supportsBlackboxingScripts()) {
this._blackboxSettingsView = new WI.BlackboxSettingsView;
+ this._createReferenceLink(this._blackboxSettingsView);
this.addSettingsView(this._blackboxSettingsView);
}
@@ -244,6 +245,8 @@
zoomEditor.addEventListener(WI.SettingEditor.Event.ValueDidChange, () => { WI.setZoomFactor(zoomEditor.value); });
WI.settings.zoomFactor.addEventListener(WI.Setting.Event.Changed, () => { zoomEditor.value = WI.getZoomFactor().maxDecimals(2); });
+ this._createReferenceLink(generalSettingsView);
+
this.addSettingsView(generalSettingsView);
}
@@ -262,6 +265,8 @@
elementsSettingsView.addSetting(WI.UIString("CSS Changes:"), WI.settings.cssChangesPerNode, WI.UIString("Show only for selected node"));
+ this._createReferenceLink(elementsSettingsView);
+
this.addSettingsView(elementsSettingsView);
}
@@ -279,6 +284,8 @@
sourcesSettingsView.addSetting(WI.UIString("Images:"), WI.settings.showImageGrid, WI.UIString("Show transparency grid"));
+ this._createReferenceLink(sourcesSettingsView);
+
this.addSettingsView(sourcesSettingsView);
}
@@ -337,6 +344,8 @@
}
}
+ this._createReferenceLink(consoleSettingsView);
+
this.addSettingsView(consoleSettingsView);
}
@@ -385,6 +394,8 @@
if (InspectorBackend.hasDomain("CSS"))
listenForChange(WI.settings.experimentalEnableStylesJumpToEffective);
+ this._createReferenceLink(experimentalSettingsView);
+
this.addSettingsView(experimentalSettingsView);
}
@@ -472,6 +483,18 @@
this.addSettingsView(this._debugSettingsView);
}
+ _createReferenceLink(settingsView)
+ {
+ let link = document.createElement("a");
+ link.href = link.title = "https://webkit.org/web-inspector/web-inspector-settings/#" + settingsView.identifier;
+ link.textContent = WI.UIString("Web Inspector Reference");
+
+ link.appendChild(WI.createGoToArrowButton());
+
+ let container = settingsView.addCenteredContainer(link);
+ container.classList.add("reference");
+ }
+
_updateNavigationBarVisibility()
{
let visibleItems = 0;
diff --git a/Source/WebInspectorUI/UserInterface/Views/URLBreakpointPopover.css b/Source/WebInspectorUI/UserInterface/Views/URLBreakpointPopover.css
index 89c09613..1b8e8cf 100644
--- a/Source/WebInspectorUI/UserInterface/Views/URLBreakpointPopover.css
+++ b/Source/WebInspectorUI/UserInterface/Views/URLBreakpointPopover.css
@@ -53,6 +53,11 @@
overflow: hidden;
}
+.popover .url-breakpoint-content .reference-page-link-container {
+ -webkit-margin-start: 0.5em;
+ vertical-align: -1px;
+}
+
@media (prefers-color-scheme: dark) {
.popover .url-breakpoint-content > .editor-wrapper > .editor {
-webkit-appearance: unset;
diff --git a/Source/WebInspectorUI/UserInterface/Views/URLBreakpointPopover.js b/Source/WebInspectorUI/UserInterface/Views/URLBreakpointPopover.js
index e94d913..e9e3573 100644
--- a/Source/WebInspectorUI/UserInterface/Views/URLBreakpointPopover.js
+++ b/Source/WebInspectorUI/UserInterface/Views/URLBreakpointPopover.js
@@ -74,7 +74,7 @@
this._codeMirror.focus();
});
- editorWrapper.append(this._typeSelectElement, this._createEditor());
+ editorWrapper.append(this._typeSelectElement, this._createEditor(), WI.createReferencePageLink("url-breakpoints", "configuration"));
contentElement.append(label, editorWrapper);
this.content = contentElement;