Title: [237656] trunk
Revision
237656
Author
drou...@apple.com
Date
2018-10-31 15:00:34 -0700 (Wed, 31 Oct 2018)

Log Message

Web Inspector: Audit: attempt to re-link DOM nodes for imported results
https://bugs.webkit.org/show_bug.cgi?id=191044
<rdar://problem/45687364>

Reviewed by Brian Burg.

Source/WebInspectorUI:

When importing a `WI.AuditTestCaseResult`, attempt to `querySelector` for each item in
`data.domNodes`. If a node is found, replace it with that node and show a tree instead.

* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.async fromPayload): Added.
(WI.AuditTestCase.fromPayload): Deleted.

* UserInterface/Models/AuditTestGroup.js:
(WI.AuditTestGroup.async fromPayload): Added.
(WI.AuditTestGroup.fromPayload): Deleted.

* UserInterface/Models/AuditTestCaseResult.js:
(WI.AuditTestCaseResult.async fromPayload): Added.
(WI.AuditTestCaseResult.fromPayload): Deleted.

* UserInterface/Models/AuditTestGroupResult.js:
(WI.AuditTestGroupResult.async fromPayload): Added.
(WI.AuditTestGroupResult.fromPayload): Deleted.

* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.import):

LayoutTests:

* inspector/model/auditTestCase.html:
* inspector/model/auditTestCaseResult.html:
* inspector/model/auditTestGroup.html:
* inspector/model/auditTestGroupResult.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (237655 => 237656)


--- trunk/LayoutTests/ChangeLog	2018-10-31 21:52:07 UTC (rev 237655)
+++ trunk/LayoutTests/ChangeLog	2018-10-31 22:00:34 UTC (rev 237656)
@@ -1,3 +1,16 @@
+2018-10-31  Devin Rousso  <drou...@apple.com>
+
+        Web Inspector: Audit: attempt to re-link DOM nodes for imported results
+        https://bugs.webkit.org/show_bug.cgi?id=191044
+        <rdar://problem/45687364>
+
+        Reviewed by Brian Burg.
+
+        * inspector/model/auditTestCase.html:
+        * inspector/model/auditTestCaseResult.html:
+        * inspector/model/auditTestGroup.html:
+        * inspector/model/auditTestGroupResult.html:
+
 2018-10-31  Jer Noble  <jer.no...@apple.com>
 
         MediaSource.isTypeSupported('video/mp4; codecs="hvc1.1.6.L60.B0') is inproperly rejected

Modified: trunk/LayoutTests/inspector/model/auditTestCase.html (237655 => 237656)


--- trunk/LayoutTests/inspector/model/auditTestCase.html	2018-10-31 21:52:07 UTC (rev 237655)
+++ trunk/LayoutTests/inspector/model/auditTestCase.html	2018-10-31 22:00:34 UTC (rev 237656)
@@ -11,7 +11,7 @@
         suite.addTestCase({
             name,
             async test() {
-                let object = WI.AuditTestCase.fromPayload(payload);
+                let object = await WI.AuditTestCase.fromPayload(payload);
                 InspectorTest.log(object ? JSON.stringify(object, null, 2) : object);
             },
         });

Modified: trunk/LayoutTests/inspector/model/auditTestCaseResult.html (237655 => 237656)


--- trunk/LayoutTests/inspector/model/auditTestCaseResult.html	2018-10-31 21:52:07 UTC (rev 237655)
+++ trunk/LayoutTests/inspector/model/auditTestCaseResult.html	2018-10-31 22:00:34 UTC (rev 237656)
@@ -11,7 +11,7 @@
         suite.addTestCase({
             name,
             async test() {
-                let object = WI.AuditTestCaseResult.fromPayload(payload);
+                let object = await WI.AuditTestCaseResult.fromPayload(payload);
                 InspectorTest.log(object ? JSON.stringify(object, null, 2) : object);
             },
         });

Modified: trunk/LayoutTests/inspector/model/auditTestGroup.html (237655 => 237656)


--- trunk/LayoutTests/inspector/model/auditTestGroup.html	2018-10-31 21:52:07 UTC (rev 237655)
+++ trunk/LayoutTests/inspector/model/auditTestGroup.html	2018-10-31 22:00:34 UTC (rev 237656)
@@ -11,7 +11,7 @@
         suite.addTestCase({
             name,
             async test() {
-                let object = WI.AuditTestGroup.fromPayload(payload);
+                let object = await WI.AuditTestGroup.fromPayload(payload);
                 InspectorTest.log(object ? JSON.stringify(object, null, 2) : object);
             },
         });

Modified: trunk/LayoutTests/inspector/model/auditTestGroupResult.html (237655 => 237656)


--- trunk/LayoutTests/inspector/model/auditTestGroupResult.html	2018-10-31 21:52:07 UTC (rev 237655)
+++ trunk/LayoutTests/inspector/model/auditTestGroupResult.html	2018-10-31 22:00:34 UTC (rev 237656)
@@ -11,7 +11,7 @@
         suite.addTestCase({
             name,
             async test() {
-                let object = WI.AuditTestGroupResult.fromPayload(payload);
+                let object = await WI.AuditTestGroupResult.fromPayload(payload);
                 InspectorTest.log(object ? JSON.stringify(object, null, 2) : object);
             },
         });

Modified: trunk/Source/WebInspectorUI/ChangeLog (237655 => 237656)


--- trunk/Source/WebInspectorUI/ChangeLog	2018-10-31 21:52:07 UTC (rev 237655)
+++ trunk/Source/WebInspectorUI/ChangeLog	2018-10-31 22:00:34 UTC (rev 237656)
@@ -1,3 +1,33 @@
+2018-10-31  Devin Rousso  <drou...@apple.com>
+
+        Web Inspector: Audit: attempt to re-link DOM nodes for imported results
+        https://bugs.webkit.org/show_bug.cgi?id=191044
+        <rdar://problem/45687364>
+
+        Reviewed by Brian Burg.
+
+        When importing a `WI.AuditTestCaseResult`, attempt to `querySelector` for each item in
+        `data.domNodes`. If a node is found, replace it with that node and show a tree instead.
+
+        * UserInterface/Models/AuditTestCase.js:
+        (WI.AuditTestCase.async fromPayload): Added.
+        (WI.AuditTestCase.fromPayload): Deleted.
+
+        * UserInterface/Models/AuditTestGroup.js:
+        (WI.AuditTestGroup.async fromPayload): Added.
+        (WI.AuditTestGroup.fromPayload): Deleted.
+
+        * UserInterface/Models/AuditTestCaseResult.js:
+        (WI.AuditTestCaseResult.async fromPayload): Added.
+        (WI.AuditTestCaseResult.fromPayload): Deleted.
+
+        * UserInterface/Models/AuditTestGroupResult.js:
+        (WI.AuditTestGroupResult.async fromPayload): Added.
+        (WI.AuditTestGroupResult.fromPayload): Deleted.
+
+        * UserInterface/Controllers/AuditManager.js:
+        (WI.AuditManager.prototype.import):
+
 2018-10-31  Joseph Pecoraro  <pecor...@apple.com>
 
         Follow-up review comment to r237652.

Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/AuditManager.js (237655 => 237656)


--- trunk/Source/WebInspectorUI/UserInterface/Controllers/AuditManager.js	2018-10-31 21:52:07 UTC (rev 237655)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/AuditManager.js	2018-10-31 22:00:34 UTC (rev 237656)
@@ -95,7 +95,7 @@
 
     import()
     {
-        WI.loadDataFromFile((data, filename) => {
+        WI.loadDataFromFile(async (data, filename) => {
             if (!data)
                 return;
 
@@ -107,9 +107,9 @@
                 return;
             }
 
-            let object = WI.AuditTestGroup.fromPayload(payload) || WI.AuditTestCase.fromPayload(payload);
+            let object = await WI.AuditTestGroup.fromPayload(payload) || await WI.AuditTestCase.fromPayload(payload);
             if (!object) {
-                object = WI.AuditTestGroupResult.fromPayload(payload) || WI.AuditTestCaseResult.fromPayload(payload);
+                object = await WI.AuditTestGroupResult.fromPayload(payload) || await WI.AuditTestCaseResult.fromPayload(payload);
                 if (!object) {
                     WI.AuditManager.synthesizeError(WI.UIString("invalid JSON."));
                     return;

Modified: trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestCase.js (237655 => 237656)


--- trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestCase.js	2018-10-31 21:52:07 UTC (rev 237655)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestCase.js	2018-10-31 22:00:34 UTC (rev 237656)
@@ -36,7 +36,7 @@
 
     // Static
 
-    static fromPayload(payload)
+    static async fromPayload(payload)
     {
         if (typeof payload !== "object" || payload === null)
             return null;

Modified: trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestCaseResult.js (237655 => 237656)


--- trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestCaseResult.js	2018-10-31 21:52:07 UTC (rev 237655)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestCaseResult.js	2018-10-31 22:00:34 UTC (rev 237656)
@@ -40,7 +40,7 @@
 
     // Static
 
-    static fromPayload(payload)
+    static async fromPayload(payload)
     {
         if (typeof payload !== "object" || payload === null)
             return null;
@@ -86,8 +86,20 @@
             options.description = description;
         if (!isEmptyObject(data)) {
             options.data = ""
-            if (data.domNodes && data.domNodes.length)
+            if (data.domNodes && data.domNodes.length) {
+                if (window.DOMAgent) {
+                    let documentNode = await new Promise((resolve) => WI.domManager.requestDocument(resolve));
+                    data.domNodes = 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;
+                    }));
+                }
+
                 options.data.domNodes = data.domNodes;
+            }
             if (data.domAttributes && data.domAttributes.length)
                 options.data.domAttributes = data.domAttributes;
             if (data.errors && data.errors.length)
@@ -102,6 +114,7 @@
             if (metadata.url)
                 options.metadata.url = ""
         }
+
         return new WI.AuditTestCaseResult(name, level, options);
     }
 

Modified: trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestGroup.js (237655 => 237656)


--- trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestGroup.js	2018-10-31 21:52:07 UTC (rev 237655)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestGroup.js	2018-10-31 22:00:34 UTC (rev 237656)
@@ -41,7 +41,7 @@
 
     // Static
 
-    static fromPayload(payload)
+    static async fromPayload(payload)
     {
         if (typeof payload !== "object" || payload === null)
             return null;
@@ -57,7 +57,17 @@
         if (!Array.isArray(tests))
             return null;
 
-        tests = tests.map((test) => WI.AuditTestCase.fromPayload(test) || WI.AuditTestGroup.fromPayload(test));
+        tests = await Promise.all(tests.map(async (test) => {
+            let testCase = await WI.AuditTestCase.fromPayload(test);
+            if (testCase)
+                return testCase;
+
+            let testGroup = await WI.AuditTestGroup.fromPayload(test);
+            if (testGroup)
+                return testGroup;
+
+            return null;
+        }));
         tests = tests.filter((test) => !!test);
         if (!tests.length)
             return null;

Modified: trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestGroupResult.js (237655 => 237656)


--- trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestGroupResult.js	2018-10-31 21:52:07 UTC (rev 237655)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/AuditTestGroupResult.js	2018-10-31 22:00:34 UTC (rev 237656)
@@ -36,7 +36,7 @@
 
     // Static
 
-    static fromPayload(payload)
+    static async fromPayload(payload)
     {
         if (typeof payload !== "object" || payload === null)
             return null;
@@ -52,7 +52,17 @@
         if (!Array.isArray(results))
             return null;
 
-        results = results.map((result) => WI.AuditTestGroupResult.fromPayload(result) || WI.AuditTestCaseResult.fromPayload(result));
+        results = await Promise.all(results.map(async (test) => {
+            let testCaseResult = await WI.AuditTestCaseResult.fromPayload(test);
+            if (testCaseResult)
+                return testCaseResult;
+
+            let testGroupResult = await WI.AuditTestGroupResult.fromPayload(test);
+            if (testGroupResult)
+                return testGroupResult;
+
+            return null;
+        }));
         results = results.filter((result) => !!result);
         if (!results.length)
             return null;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to