Title: [238333] trunk
Revision
238333
Author
drou...@apple.com
Date
2018-11-16 18:10:43 -0800 (Fri, 16 Nov 2018)

Log Message

Web Inspector: Audit: minor style improvements
https://bugs.webkit.org/show_bug.cgi?id=191727

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager):
(WI.AuditManager.prototype._handleFrameMainResourceDidChange): Added.
Clear test results when the main frame navigates, but don't clear the saved results.

* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.prototype.async run):
* UserInterface/Models/AuditTestCaseResult.js:
(WI.AuditTestCaseResult):
(WI.AuditTestCaseResult.async fromPayload):
(WI.AuditTestCaseResult.prototype.get resolvedDOMNodes): Added.
(WI.AuditTestCaseResult.prototype.toJSON):
Capture the full CSS path for any returned DOM nodes when the test finishes running, so that
if the node moves around the path isn't modified as well.

* UserInterface/Views/AuditTestCaseContentView.js:
(WI.AuditTestCaseContentView.prototype.layout):
Always show the URL for the test when viewing a saved result.

* UserInterface/Views/AuditTestContentView.css:
(.content-view-container > .content-view.audit-test > header p):
(.content-view.audit-test > header):
* UserInterface/Views/AuditTestCaseContentView.css:
(.content-view.audit-test-case > header): Added.
(.content-view.audit-test-case > header h1 > img):
(.content-view.audit-test-case > header > .metadata > .source): Added.
(.content-view.audit-test-case > header > .metadata > .duration):
(.content-view.audit-test-case > section table > tr > td:first-child):
* UserInterface/Views/AuditTestGroupContentView.css:
(.content-view.audit-test-group > header):
Horizontally align items in the header for visual consistency.

LayoutTests:

* inspector/audit/resources/audit-utilities.js:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (238332 => 238333)


--- trunk/LayoutTests/ChangeLog	2018-11-17 01:34:04 UTC (rev 238332)
+++ trunk/LayoutTests/ChangeLog	2018-11-17 02:10:43 UTC (rev 238333)
@@ -1,3 +1,12 @@
+2018-11-16  Devin Rousso  <drou...@apple.com>
+
+        Web Inspector: Audit: minor style improvements
+        https://bugs.webkit.org/show_bug.cgi?id=191727
+
+        Reviewed by Joseph Pecoraro.
+
+        * inspector/audit/resources/audit-utilities.js:
+
 2018-11-16  Joseph Pecoraro  <pecor...@apple.com>
 
         Web Inspector: Keep Web Inspector window alive across process swaps (PSON) (Local Inspector)

Modified: trunk/LayoutTests/inspector/audit/resources/audit-utilities.js (238332 => 238333)


--- trunk/LayoutTests/inspector/audit/resources/audit-utilities.js	2018-11-17 01:34:04 UTC (rev 238332)
+++ trunk/LayoutTests/inspector/audit/resources/audit-utilities.js	2018-11-17 02:10:43 UTC (rev 238333)
@@ -13,7 +13,7 @@
         if (!array.length)
             return;
 
-        InspectorTest.assert(array.every((item) => typeof item === "string"), name + "should only contain strings.");
+        InspectorTest.assert(array.every((item) => typeof item === "string"), name + " should only contain strings.");
         InspectorTest.log("  " + name + ":");
         for (let item of array)
             InspectorTest.log("   - " + item);
@@ -45,8 +45,14 @@
 
                     let data = ""
                     if (data.domNodes) {
-                        InspectorTest.assert(data.domNodes.every((domNode) => domNode instanceof WI.DOMNode), "domNodes should only contain WI.DOMNode.");
-                        logArray("domNodes", data.domNodes.map((domNode) => domNode.displayName));
+                        if (result.resolvedDOMNodes) {
+                            InspectorTest.assert(result.resolvedDOMNodes.every((domNode) => domNode instanceof WI.DOMNode), "domNodes should only contain WI.DOMNode.");
+                            logArray("domNodes", result.resolvedDOMNodes.map((domNode) => domNode.displayName));
+
+                            for (let i = 0; i < result.resolvedDOMNodes.length; ++i)
+                                InspectorTest.assert(WI.cssPath(result.resolvedDOMNodes[i], {full: true}) === data.domNodes[i], "The resolved DOM node should match the saved CSS path.");
+                        } else
+                            logArray("domNodes", data.domNodes);
                     }
                     if (data.domAttributes)
                         logArray("domAttributes", data.domAttributes);

Modified: trunk/Source/WebInspectorUI/ChangeLog (238332 => 238333)


--- trunk/Source/WebInspectorUI/ChangeLog	2018-11-17 01:34:04 UTC (rev 238332)
+++ trunk/Source/WebInspectorUI/ChangeLog	2018-11-17 02:10:43 UTC (rev 238333)
@@ -1,3 +1,42 @@
+2018-11-16  Devin Rousso  <drou...@apple.com>
+
+        Web Inspector: Audit: minor style improvements
+        https://bugs.webkit.org/show_bug.cgi?id=191727
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Controllers/AuditManager.js:
+        (WI.AuditManager):
+        (WI.AuditManager.prototype._handleFrameMainResourceDidChange): Added.
+        Clear test results when the main frame navigates, but don't clear the saved results.
+
+        * UserInterface/Models/AuditTestCase.js:
+        (WI.AuditTestCase.prototype.async run):
+        * UserInterface/Models/AuditTestCaseResult.js:
+        (WI.AuditTestCaseResult):
+        (WI.AuditTestCaseResult.async fromPayload):
+        (WI.AuditTestCaseResult.prototype.get resolvedDOMNodes): Added.
+        (WI.AuditTestCaseResult.prototype.toJSON):
+        Capture the full CSS path for any returned DOM nodes when the test finishes running, so that
+        if the node moves around the path isn't modified as well.
+
+        * UserInterface/Views/AuditTestCaseContentView.js:
+        (WI.AuditTestCaseContentView.prototype.layout):
+        Always show the URL for the test when viewing a saved result.
+
+        * UserInterface/Views/AuditTestContentView.css:
+        (.content-view-container > .content-view.audit-test > header p):
+        (.content-view.audit-test > header):
+        * UserInterface/Views/AuditTestCaseContentView.css:
+        (.content-view.audit-test-case > header): Added.
+        (.content-view.audit-test-case > header h1 > img):
+        (.content-view.audit-test-case > header > .metadata > .source): Added.
+        (.content-view.audit-test-case > header > .metadata > .duration):
+        (.content-view.audit-test-case > section table > tr > td:first-child):
+        * UserInterface/Views/AuditTestGroupContentView.css:
+        (.content-view.audit-test-group > header):
+        Horizontally align items in the header for visual consistency.
+
 2018-11-16  Joseph Pecoraro  <pecor...@apple.com>
 
         Web Inspector: Include default filtering of InspectorBackend.dumpInspectorProtocolMessages with multi target backend

Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/AuditManager.js (238332 => 238333)


--- trunk/Source/WebInspectorUI/UserInterface/Controllers/AuditManager.js	2018-11-17 01:34:04 UTC (rev 238332)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/AuditManager.js	2018-11-17 02:10:43 UTC (rev 238333)
@@ -34,6 +34,8 @@
 
         this._runningState = WI.AuditManager.RunningState.Inactive;
         this._runningTests = [];
+
+        WI.Frame.addEventListener(WI.Frame.Event.MainResourceDidChange, this._handleFrameMainResourceDidChange, this);
     }
 
     static synthesizeError(message)
@@ -181,6 +183,15 @@
             index: this._results.length - 1,
         });
     }
+
+    _handleFrameMainResourceDidChange(event)
+    {
+        if (!event.target.isMainFrame())
+            return;
+
+        for (let test of this._tests)
+            test.clearResult();
+    }
 };
 
 WI.AuditManager.RunningState = {

Modified: trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestCase.js (238332 => 238333)


--- trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestCase.js	2018-11-17 01:34:04 UTC (rev 238332)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestCase.js	2018-11-17 02:10:43 UTC (rev 238333)
@@ -82,6 +82,7 @@
             startTimestamp: null,
             endTimestamp: null,
         };
+        let resolvedDOMNodes = null;
 
         function setLevel(newLevel) {
             let newLevelIndex = levelStrings.indexOf(newLevel);
@@ -205,7 +206,11 @@
 
                     if (!data.domNodes)
                         data.domNodes = [];
-                    data.domNodes.push(domNode);
+                    data.domNodes.push(WI.cssPath(domNode, {full: true}));
+
+                    if (!resolvedDOMNodes)
+                        resolvedDOMNodes = [];
+                    resolvedDOMNodes.push(domNode);
                 });
 
                 await resultArrayForEach("domAttributes", (item) => {
@@ -243,6 +248,8 @@
         };
         if (!isEmptyObject(data))
             options.data = ""
+        if (resolvedDOMNodes)
+            options.resolvedDOMNodes = resolvedDOMNodes;
         this._result = new WI.AuditTestCaseResult(this.name, level, options);
     }
 };

Modified: trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestCaseResult.js (238332 => 238333)


--- trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestCaseResult.js	2018-11-17 01:34:04 UTC (rev 238332)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestCaseResult.js	2018-11-17 02:10:43 UTC (rev 238333)
@@ -25,7 +25,7 @@
 
 WI.AuditTestCaseResult = class AuditTestCaseResult extends WI.AuditTestResultBase
 {
-    constructor(name, level, {description, data, metadata} = {})
+    constructor(name, level, {description, data, metadata, resolvedDOMNodes} = {})
     {
         console.assert(Object.values(WI.AuditTestCaseResult.Level).includes(level));
         console.assert(!data || typeof data ="" "object");
@@ -36,6 +36,9 @@
         this._level = level;
         this._data = data || {};
         this._metadata = metadata || {};
+
+        // This array is a mirror of `this._data.domNodes` where each item is a `WI.DOMNode`.
+        this._resolvedDOMNodes = resolvedDOMNodes || [];
     }
 
     // Static
@@ -87,14 +90,14 @@
         if (!isEmptyObject(data)) {
             options.data = ""
             if (data.domNodes && data.domNodes.length) {
-                if (window.DOMAgent) {
+                if (window.DOMAgent && (!metadata.url || metadata.url ="" WI.networkManager.mainFrame.url)) {
                     let documentNode = await new Promise((resolve) => WI.domManager.requestDocument(resolve));
-                    data.domNodes = await Promise.all(data.domNodes.map(async (domNodeString) => {
+                    options.resolvedDOMNodes = await Promise.all(data.domNodes.map(async (domNodeString) => {
                         let nodeId = 0;
                         try {
                             nodeId = await WI.domManager.querySelector(documentNode, domNodeString);
                         } catch { }
-                        return WI.domManager.nodeForId(nodeId) || domNodeString;
+                        return WI.domManager.nodeForId(nodeId) || null;
                     }));
                 }
 
@@ -123,6 +126,7 @@
     get level() { return this._level; }
     get data() { return this._data; }
     get metadata() { return this._metadata; }
+    get resolvedDOMNodes() { return this._resolvedDOMNodes; }
 
     get result()
     {
@@ -161,7 +165,7 @@
 
         let data = ""
         if (this._data.domNodes && this._data.domNodes.length) {
-            data.domNodes = this._data.domNodes.map((domNode) => domNode instanceof WI.DOMNode ? WI.cssPath(domNode, {full: true}) : domNode);
+            data.domNodes = this._data.domNodes;
             if (this._data.domAttributes && this._data.domAttributes.length)
                 data.domAttributes = this._data.domAttributes;
         }

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/AuditTestCaseContentView.css (238332 => 238333)


--- trunk/Source/WebInspectorUI/UserInterface/Views/AuditTestCaseContentView.css	2018-11-17 01:34:04 UTC (rev 238332)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/AuditTestCaseContentView.css	2018-11-17 02:10:43 UTC (rev 238333)
@@ -37,6 +37,10 @@
     margin-top: var(--audit-test-vertical-space);
 }
 
+.content-view.audit-test-case > header {
+    -webkit-padding-end: calc(var(--audit-test-horizontal-space) / 2);
+}
+
 .content-view.audit-test-case > header h1 {
     display: flex;
     align-items: center;
@@ -47,7 +51,7 @@
     height: 1em;
     min-width: 16px;
     min-height: 16px;
-    -webkit-margin-end: 4px;
+    -webkit-margin-end: 0.25em;
 }
 
 .content-view.audit-test-case > header > .metadata {
@@ -56,6 +60,10 @@
     text-align: end;
 }
 
+.content-view.audit-test-case > header > .metadata > .source {
+    -webkit-margin-end: 3px;
+}
+
 .content-view.audit-test-case > header > .metadata > .source > time {
     display: block;
     font-style: italic;
@@ -68,9 +76,10 @@
 
 .content-view.audit-test-case > header > .metadata > .duration {
     display: inline-block;
-    width: var(--metadata-width);
+    min-width: var(--metadata-width);
     -webkit-margin-start: var(--audit-test-horizontal-space);
     font-size: 12px;
+    text-align: center;
     font-weight: bold;
 }
 
@@ -104,7 +113,6 @@
 }
 
 .content-view.audit-test-case > section table > tr > td:first-child {
-    -webkit-padding-start: calc(8px - 0.375em);
     font-family: -webkit-system-font, sans-serif;
     font-size: 11px;
     font-variant-numeric: tabular-nums;

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/AuditTestCaseContentView.js (238332 => 238333)


--- trunk/Source/WebInspectorUI/UserInterface/Views/AuditTestCaseContentView.js	2018-11-17 01:34:04 UTC (rev 238332)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/AuditTestCaseContentView.js	2018-11-17 02:10:43 UTC (rev 238333)
@@ -110,7 +110,7 @@
                 }
             }
 
-            if (metadata.url && metadata.url !== WI.networkManager.mainFrame.url) {
+            if (metadata.url && (metadata.url !== WI.networkManager.mainFrame.url || this.representedObject instanceof WI.AuditTestResultBase)) {
                 let url = "" URL(metadata.url);
                 let origin = url.origin;
                 if (url.pathname.startsWith("/"))
@@ -133,6 +133,8 @@
             let tableContainer = domNodesContainer.appendChild(document.createElement("table"));
 
             resultData.domNodes.forEach((domNode, index) => {
+                domNode = result.resolvedDOMNodes[index] || domNode;
+
                 let rowElement = tableContainer.appendChild(document.createElement("tr"));
 
                 let indexElement = rowElement.appendChild(document.createElement("td"));

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/AuditTestContentView.css (238332 => 238333)


--- trunk/Source/WebInspectorUI/UserInterface/Views/AuditTestContentView.css	2018-11-17 01:34:04 UTC (rev 238332)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/AuditTestContentView.css	2018-11-17 02:10:43 UTC (rev 238333)
@@ -39,6 +39,7 @@
 
 .content-view-container > .content-view.audit-test > header p {
     font-size: 1.25em;
+    opacity: 0.85;
 }
 
 .content-view.audit-test {
@@ -54,7 +55,9 @@
 .content-view.audit-test > header {
     display: flex;
     align-items: center;
-    padding: var(--audit-test-vertical-space) var(--audit-test-horizontal-space);
+    padding-top: var(--audit-test-vertical-space);
+    padding-bottom: var(--audit-test-vertical-space);
+    -webkit-padding-start: var(--audit-test-horizontal-space);
 
     --metadata-width: 60px;
 }

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/AuditTestGroupContentView.css (238332 => 238333)


--- trunk/Source/WebInspectorUI/UserInterface/Views/AuditTestGroupContentView.css	2018-11-17 01:34:04 UTC (rev 238332)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/AuditTestGroupContentView.css	2018-11-17 02:10:43 UTC (rev 238333)
@@ -29,6 +29,7 @@
 
 .content-view.audit-test-group > header {
     margin-top: -1px;
+    -webkit-padding-end: var(--audit-test-horizontal-space);
     border-top: 1px solid var(--border-color);
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to