Title: [288519] branches/safari-613-branch
Revision
288519
Author
[email protected]
Date
2022-01-24 17:56:15 -0800 (Mon, 24 Jan 2022)

Log Message

Cherry-pick r288266. rdar://problem/87804395

    Web Inspector: fully blackboxed stack traces don't show the right top call frame
    https://bugs.webkit.org/show_bug.cgi?id=235381

    Reviewed by Patrick Angle.

    Source/WebInspectorUI:

    * UserInterface/Models/StackTrace.js:
    (WI.StackTrace):
    (WI.StackTrace.fromPayload):
    (WI.StackTrace.prototype.get firstNonNativeNonAnonymousNotBlackboxedCallFrame):
    Only assign to `firstNonNativeNonAnonymousCallFrame` once.
    Drive-by: Don't re-fetch the blackbox data for the `WI.SourceCode` of the `WI.CallFrame`.
    Drive-by: Combine optional parameters into an `options = {}` for current code cleanliness
              and greater flexibility for future changes.

    * UserInterface/Models/CallFrame.js:
    (WI.CallFrame):
    (WI.CallFrame.fromDebuggerPayload):
    (WI.CallFrame.fromPayload):
    * UserInterface/Views/ThreadTreeElement.js:
    (WI.ThreadTreeElement.prototype.refresh):
    Drive-by: Combine optional parameters into an `options = {}` for current code cleanliness
              and greater flexibility for future changes.

    * UserInterface/Views/CallFrameTreeElement.js:
    (WI.CallFrameTreeElement):
    (WI.CallFrameTreeElement.prototype.onattach):
    * UserInterface/Views/CallFrameView.js:
    (WI.CallFrameView):
    Drive-by: Don't re-fetch the blackbox data for the `WI.SourceCode` of the `WI.CallFrame`.

    LayoutTests:

    * inspector/model/stack-trace.html:
    * inspector/model/stack-trace-expected.txt:

    * inspector/debugger/resources/async-stack-trace-test.js:
    (TestPage.registerInitializer.window.getAsyncStackTrace):
    * inspector/debugger/resources/log-active-stack-trace.js:
    (TestPage.registerInitializer.window.getActiveStackTrace):
    * inspector/debugger/tail-deleted-frames/resources/stack-trace-utilities.js:
    (TestPage.registerInitializer.window.getAsyncStackTrace):
    Drive-by: Adopt new `WI.StackTrace` constructor arguments format.

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@288266 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-613-branch/LayoutTests/ChangeLog (288518 => 288519)


--- branches/safari-613-branch/LayoutTests/ChangeLog	2022-01-25 01:56:10 UTC (rev 288518)
+++ branches/safari-613-branch/LayoutTests/ChangeLog	2022-01-25 01:56:15 UTC (rev 288519)
@@ -1,5 +1,75 @@
 2022-01-24  Alan Coon  <[email protected]>
 
+        Cherry-pick r288266. rdar://problem/87804395
+
+    Web Inspector: fully blackboxed stack traces don't show the right top call frame
+    https://bugs.webkit.org/show_bug.cgi?id=235381
+    
+    Reviewed by Patrick Angle.
+    
+    Source/WebInspectorUI:
+    
+    * UserInterface/Models/StackTrace.js:
+    (WI.StackTrace):
+    (WI.StackTrace.fromPayload):
+    (WI.StackTrace.prototype.get firstNonNativeNonAnonymousNotBlackboxedCallFrame):
+    Only assign to `firstNonNativeNonAnonymousCallFrame` once.
+    Drive-by: Don't re-fetch the blackbox data for the `WI.SourceCode` of the `WI.CallFrame`.
+    Drive-by: Combine optional parameters into an `options = {}` for current code cleanliness
+              and greater flexibility for future changes.
+    
+    * UserInterface/Models/CallFrame.js:
+    (WI.CallFrame):
+    (WI.CallFrame.fromDebuggerPayload):
+    (WI.CallFrame.fromPayload):
+    * UserInterface/Views/ThreadTreeElement.js:
+    (WI.ThreadTreeElement.prototype.refresh):
+    Drive-by: Combine optional parameters into an `options = {}` for current code cleanliness
+              and greater flexibility for future changes.
+    
+    * UserInterface/Views/CallFrameTreeElement.js:
+    (WI.CallFrameTreeElement):
+    (WI.CallFrameTreeElement.prototype.onattach):
+    * UserInterface/Views/CallFrameView.js:
+    (WI.CallFrameView):
+    Drive-by: Don't re-fetch the blackbox data for the `WI.SourceCode` of the `WI.CallFrame`.
+    
+    LayoutTests:
+    
+    * inspector/model/stack-trace.html:
+    * inspector/model/stack-trace-expected.txt:
+    
+    * inspector/debugger/resources/async-stack-trace-test.js:
+    (TestPage.registerInitializer.window.getAsyncStackTrace):
+    * inspector/debugger/resources/log-active-stack-trace.js:
+    (TestPage.registerInitializer.window.getActiveStackTrace):
+    * inspector/debugger/tail-deleted-frames/resources/stack-trace-utilities.js:
+    (TestPage.registerInitializer.window.getAsyncStackTrace):
+    Drive-by: Adopt new `WI.StackTrace` constructor arguments format.
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@288266 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2022-01-19  Devin Rousso  <[email protected]>
+
+            Web Inspector: fully blackboxed stack traces don't show the right top call frame
+            https://bugs.webkit.org/show_bug.cgi?id=235381
+
+            Reviewed by Patrick Angle.
+
+            * inspector/model/stack-trace.html:
+            * inspector/model/stack-trace-expected.txt:
+
+            * inspector/debugger/resources/async-stack-trace-test.js:
+            (TestPage.registerInitializer.window.getAsyncStackTrace):
+            * inspector/debugger/resources/log-active-stack-trace.js:
+            (TestPage.registerInitializer.window.getActiveStackTrace):
+            * inspector/debugger/tail-deleted-frames/resources/stack-trace-utilities.js:
+            (TestPage.registerInitializer.window.getAsyncStackTrace):
+            Drive-by: Adopt new `WI.StackTrace` constructor arguments format.
+
+2022-01-24  Alan Coon  <[email protected]>
+
         Cherry-pick r288264. rdar://problem/87745419
 
     Align our qualified name validation with the specification

Modified: branches/safari-613-branch/LayoutTests/inspector/debugger/resources/async-stack-trace-test.js (288518 => 288519)


--- branches/safari-613-branch/LayoutTests/inspector/debugger/resources/async-stack-trace-test.js	2022-01-25 01:56:10 UTC (rev 288518)
+++ branches/safari-613-branch/LayoutTests/inspector/debugger/resources/async-stack-trace-test.js	2022-01-25 01:56:15 UTC (rev 288519)
@@ -9,9 +9,7 @@
         if (!targetData)
             return null;
 
-        const topCallFrameIsBoundary = false;
-        const truncated = false;
-        return new WI.StackTrace(targetData.callFrames, topCallFrameIsBoundary, truncated, targetData.asyncStackTrace);
+        return new WI.StackTrace(targetData.callFrames, {parentStackTrace: targetData.asyncStackTrace});
     };
 
     window.logAsyncStackTrace = function() {

Modified: branches/safari-613-branch/LayoutTests/inspector/debugger/resources/log-active-stack-trace.js (288518 => 288519)


--- branches/safari-613-branch/LayoutTests/inspector/debugger/resources/log-active-stack-trace.js	2022-01-25 01:56:10 UTC (rev 288518)
+++ branches/safari-613-branch/LayoutTests/inspector/debugger/resources/log-active-stack-trace.js	2022-01-25 01:56:15 UTC (rev 288519)
@@ -56,9 +56,7 @@
         if (!targetData)
             return null;
 
-        const topCallFrameIsBoundary = false;
-        const truncated = false;
-        return new WI.StackTrace(targetData.callFrames, topCallFrameIsBoundary, truncated, targetData.asyncStackTrace);
+        return new WI.StackTrace(targetData.callFrames, {parentStackTrace: targetData.asyncStackTrace});
     }
 
     window.logActiveStackTrace = function() {

Modified: branches/safari-613-branch/LayoutTests/inspector/debugger/tail-deleted-frames/resources/stack-trace-utilities.js (288518 => 288519)


--- branches/safari-613-branch/LayoutTests/inspector/debugger/tail-deleted-frames/resources/stack-trace-utilities.js	2022-01-25 01:56:10 UTC (rev 288518)
+++ branches/safari-613-branch/LayoutTests/inspector/debugger/tail-deleted-frames/resources/stack-trace-utilities.js	2022-01-25 01:56:15 UTC (rev 288519)
@@ -9,9 +9,7 @@
         if (!targetData)
             return null;
 
-        const topCallFrameIsBoundary = false;
-        const truncated = false;
-        return new WI.StackTrace(targetData.callFrames, topCallFrameIsBoundary, truncated, targetData.asyncStackTrace);
+        return new WI.StackTrace(targetData.callFrames, {parentStackTrace: targetData.asyncStackTrace});
     };
 
     window.logAsyncStackTrace = async function(options = {}) {

Modified: branches/safari-613-branch/LayoutTests/inspector/model/stack-trace-expected.txt (288518 => 288519)


--- branches/safari-613-branch/LayoutTests/inspector/model/stack-trace-expected.txt	2022-01-25 01:56:10 UTC (rev 288518)
+++ branches/safari-613-branch/LayoutTests/inspector/model/stack-trace-expected.txt	2022-01-25 01:56:15 UTC (rev 288519)
@@ -20,3 +20,12 @@
   9:  - nativeCode (true) programCode (false)
   10: _wrapCall - nativeCode (true) programCode (false)
 
+-- Running test case: WI.StackTrace.FirstNonNativeNonAnonymousNotBlackboxedCallFrame.Normal
+PASS: Should be able to get the first non-native non-anonymous unblackboxed call frame.
+
+-- Running test case: WI.StackTrace.FirstNonNativeNonAnonymousNotBlackboxedCallFrame.AllNative
+PASS: Should not be able to get the first non-native non-anonymous unblackboxed call frame if the entire stack trace is native.
+
+-- Running test case: WI.StackTrace.FirstNonNativeNonAnonymousNotBlackboxedCallFrame.AllBlackboxed
+PASS: Should use the first blackboxed call frame if the entire stack trace is blackboxed.
+

Modified: branches/safari-613-branch/LayoutTests/inspector/model/stack-trace.html (288518 => 288519)


--- branches/safari-613-branch/LayoutTests/inspector/model/stack-trace.html	2022-01-25 01:56:10 UTC (rev 288518)
+++ branches/safari-613-branch/LayoutTests/inspector/model/stack-trace.html	2022-01-25 01:56:15 UTC (rev 288519)
@@ -52,6 +52,58 @@
         }
     });
 
+    suite.addTestCase({
+        name: "WI.StackTrace.FirstNonNativeNonAnonymousNotBlackboxedCallFrame.Normal",
+        async test() {
+            let target = WI.mainTarget;
+
+            let sourceCode = new WI.SourceCode;
+            let sourceCodeLocation = new WI.SourceCodeLocation(sourceCode, 0, 0);
+
+            let native1 = new WI.CallFrame(target, {sourceCodeLocation, functionName: "native1", nativeCode: true});
+            let native2 = new WI.CallFrame(target, {sourceCodeLocation, functionName: "native2", nativeCode: true});
+            let blackboxed1 = new WI.CallFrame(target, {sourceCodeLocation, functionName: "blackboxed1", blackboxed: true});
+            let blackboxed2 = new WI.CallFrame(target, {sourceCodeLocation, functionName: "blackboxed2", blackboxed: true});
+            let normal1 = new WI.CallFrame(target, {sourceCodeLocation, functionName: "normal1"});
+            let normal2 = new WI.CallFrame(target, {sourceCodeLocation, functionName: "normal2"});
+
+            let stackTrace = new WI.StackTrace([native1, native2, blackboxed1, blackboxed2, normal1, normal2]);
+            InspectorTest.expectEqual(stackTrace.firstNonNativeNonAnonymousNotBlackboxedCallFrame, normal1, "Should be able to get the first non-native non-anonymous unblackboxed call frame.");
+        },
+    });
+
+    suite.addTestCase({
+        name: "WI.StackTrace.FirstNonNativeNonAnonymousNotBlackboxedCallFrame.AllNative",
+        async test() {
+            let target = WI.mainTarget;
+
+            let sourceCode = new WI.SourceCode;
+            let sourceCodeLocation = new WI.SourceCodeLocation(sourceCode, 0, 0);
+
+            let native1 = new WI.CallFrame(target, {sourceCodeLocation, functionName: "native1", nativeCode: true});
+            let native2 = new WI.CallFrame(target, {sourceCodeLocation, functionName: "native2", nativeCode: true});
+
+            let stackTrace = new WI.StackTrace([native1, native2]);
+            InspectorTest.expectNull(stackTrace.firstNonNativeNonAnonymousNotBlackboxedCallFrame, "Should not be able to get the first non-native non-anonymous unblackboxed call frame if the entire stack trace is native.");
+        },
+    });
+
+    suite.addTestCase({
+        name: "WI.StackTrace.FirstNonNativeNonAnonymousNotBlackboxedCallFrame.AllBlackboxed",
+        async test() {
+            let target = WI.mainTarget;
+
+            let sourceCode = new WI.SourceCode;
+            let sourceCodeLocation = new WI.SourceCodeLocation(sourceCode, 0, 0);
+
+            let blackboxed1 = new WI.CallFrame(target, {sourceCodeLocation, functionName: "blackboxed1", blackboxed: true});
+            let blackboxed2 = new WI.CallFrame(target, {sourceCodeLocation, functionName: "blackboxed2", blackboxed: true});
+
+            let stackTrace = new WI.StackTrace([blackboxed1, blackboxed2]);
+            InspectorTest.expectEqual(stackTrace.firstNonNativeNonAnonymousNotBlackboxedCallFrame, blackboxed1, "Should use the first blackboxed call frame if the entire stack trace is blackboxed.");
+        },
+    });
+
     suite.runTestCasesAndFinish();
 }
 </script>

Modified: branches/safari-613-branch/Source/WebInspectorUI/ChangeLog (288518 => 288519)


--- branches/safari-613-branch/Source/WebInspectorUI/ChangeLog	2022-01-25 01:56:10 UTC (rev 288518)
+++ branches/safari-613-branch/Source/WebInspectorUI/ChangeLog	2022-01-25 01:56:15 UTC (rev 288519)
@@ -1,5 +1,89 @@
 2022-01-24  Alan Coon  <[email protected]>
 
+        Cherry-pick r288266. rdar://problem/87804395
+
+    Web Inspector: fully blackboxed stack traces don't show the right top call frame
+    https://bugs.webkit.org/show_bug.cgi?id=235381
+    
+    Reviewed by Patrick Angle.
+    
+    Source/WebInspectorUI:
+    
+    * UserInterface/Models/StackTrace.js:
+    (WI.StackTrace):
+    (WI.StackTrace.fromPayload):
+    (WI.StackTrace.prototype.get firstNonNativeNonAnonymousNotBlackboxedCallFrame):
+    Only assign to `firstNonNativeNonAnonymousCallFrame` once.
+    Drive-by: Don't re-fetch the blackbox data for the `WI.SourceCode` of the `WI.CallFrame`.
+    Drive-by: Combine optional parameters into an `options = {}` for current code cleanliness
+              and greater flexibility for future changes.
+    
+    * UserInterface/Models/CallFrame.js:
+    (WI.CallFrame):
+    (WI.CallFrame.fromDebuggerPayload):
+    (WI.CallFrame.fromPayload):
+    * UserInterface/Views/ThreadTreeElement.js:
+    (WI.ThreadTreeElement.prototype.refresh):
+    Drive-by: Combine optional parameters into an `options = {}` for current code cleanliness
+              and greater flexibility for future changes.
+    
+    * UserInterface/Views/CallFrameTreeElement.js:
+    (WI.CallFrameTreeElement):
+    (WI.CallFrameTreeElement.prototype.onattach):
+    * UserInterface/Views/CallFrameView.js:
+    (WI.CallFrameView):
+    Drive-by: Don't re-fetch the blackbox data for the `WI.SourceCode` of the `WI.CallFrame`.
+    
+    LayoutTests:
+    
+    * inspector/model/stack-trace.html:
+    * inspector/model/stack-trace-expected.txt:
+    
+    * inspector/debugger/resources/async-stack-trace-test.js:
+    (TestPage.registerInitializer.window.getAsyncStackTrace):
+    * inspector/debugger/resources/log-active-stack-trace.js:
+    (TestPage.registerInitializer.window.getActiveStackTrace):
+    * inspector/debugger/tail-deleted-frames/resources/stack-trace-utilities.js:
+    (TestPage.registerInitializer.window.getAsyncStackTrace):
+    Drive-by: Adopt new `WI.StackTrace` constructor arguments format.
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@288266 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2022-01-19  Devin Rousso  <[email protected]>
+
+            Web Inspector: fully blackboxed stack traces don't show the right top call frame
+            https://bugs.webkit.org/show_bug.cgi?id=235381
+
+            Reviewed by Patrick Angle.
+
+            * UserInterface/Models/StackTrace.js:
+            (WI.StackTrace):
+            (WI.StackTrace.fromPayload):
+            (WI.StackTrace.prototype.get firstNonNativeNonAnonymousNotBlackboxedCallFrame):
+            Only assign to `firstNonNativeNonAnonymousCallFrame` once.
+            Drive-by: Don't re-fetch the blackbox data for the `WI.SourceCode` of the `WI.CallFrame`.
+            Drive-by: Combine optional parameters into an `options = {}` for current code cleanliness
+                      and greater flexibility for future changes.
+
+            * UserInterface/Models/CallFrame.js:
+            (WI.CallFrame):
+            (WI.CallFrame.fromDebuggerPayload):
+            (WI.CallFrame.fromPayload):
+            * UserInterface/Views/ThreadTreeElement.js:
+            (WI.ThreadTreeElement.prototype.refresh):
+            Drive-by: Combine optional parameters into an `options = {}` for current code cleanliness
+                      and greater flexibility for future changes.
+
+            * UserInterface/Views/CallFrameTreeElement.js:
+            (WI.CallFrameTreeElement):
+            (WI.CallFrameTreeElement.prototype.onattach):
+            * UserInterface/Views/CallFrameView.js:
+            (WI.CallFrameView):
+            Drive-by: Don't re-fetch the blackbox data for the `WI.SourceCode` of the `WI.CallFrame`.
+
+2022-01-24  Alan Coon  <[email protected]>
+
         Cherry-pick r287934. rdar://problem/86578732
 
     Web Inspector: Unhandled exception when moving cursor mid-token after receiving CSS property name completions

Modified: branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Models/CallFrame.js (288518 => 288519)


--- branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Models/CallFrame.js	2022-01-25 01:56:10 UTC (rev 288518)
+++ branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Models/CallFrame.js	2022-01-25 01:56:15 UTC (rev 288519)
@@ -25,12 +25,12 @@
 
 WI.CallFrame = class CallFrame
 {
-    constructor(target, id, sourceCodeLocation, functionName, thisObject, scopeChain, nativeCode, programCode, isTailDeleted, blackboxed)
+    constructor(target, {id, sourceCodeLocation, functionName, thisObject, scopeChain, nativeCode, programCode, isTailDeleted, blackboxed} = {})
     {
-        console.assert(target instanceof WI.Target);
-        console.assert(!sourceCodeLocation || sourceCodeLocation instanceof WI.SourceCodeLocation);
-        console.assert(!thisObject || thisObject instanceof WI.RemoteObject);
-        console.assert(!scopeChain || scopeChain instanceof Array);
+        console.assert(target instanceof WI.Target, target);
+        console.assert(!sourceCodeLocation || sourceCodeLocation instanceof WI.SourceCodeLocation, sourceCodeLocation);
+        console.assert(!thisObject || thisObject instanceof WI.RemoteObject, thisObject);
+        console.assert(!scopeChain || scopeChain.every((item) => item instanceof WI.ScopeChainNode), scopeChain);
 
         this._isConsoleEvaluation = sourceCodeLocation && isWebInspectorConsoleEvaluationScript(sourceCodeLocation.sourceCode.sourceURL);
         if (this._isConsoleEvaluation) {
@@ -216,14 +216,16 @@
 
     static fromDebuggerPayload(target, payload, scopeChain, sourceCodeLocation)
     {
-        let id = payload.callFrameId;
-        let thisObject = WI.RemoteObject.fromPayload(payload.this, target);
-        let functionName = WI.CallFrame.functionNameFromPayload(payload);
-        let nativeCode = false;
-        let programCode = WI.CallFrame.programCodeFromPayload(payload);
-        let isTailDeleted = payload.isTailDeleted;
-        let blackboxed = sourceCodeLocation && !!WI.debuggerManager.blackboxDataForSourceCode(sourceCodeLocation.sourceCode);
-        return new WI.CallFrame(target, id, sourceCodeLocation, functionName, thisObject, scopeChain, nativeCode, programCode, isTailDeleted, blackboxed);
+        return new WI.CallFrame(target, {
+            id: payload.callFrameId,
+            sourceCodeLocation,
+            functionName: WI.CallFrame.functionNameFromPayload(payload),
+            thisObject: WI.RemoteObject.fromPayload(payload.this, target),
+            scopeChain,
+            programCode: WI.CallFrame.programCodeFromPayload(payload),
+            isTailDeleted: payload.isTailDeleted,
+            blackboxed: sourceCodeLocation && !!WI.debuggerManager.blackboxDataForSourceCode(sourceCodeLocation.sourceCode),
+        });
     }
 
     static fromPayload(target, payload)
@@ -233,8 +235,6 @@
         let {url, scriptId} = payload;
         let nativeCode = false;
         let sourceCodeLocation = null;
-        let functionName = WI.CallFrame.functionNameFromPayload(payload);
-        let programCode = WI.CallFrame.programCodeFromPayload(payload);
 
         if (url ="" "[native code]") {
             nativeCode = true;
@@ -263,11 +263,12 @@
             }
         }
 
-        const id = null;
-        const thisObject = null;
-        const scopeChain = null;
-        const isTailDeleted = false;
-        let blackboxed = sourceCodeLocation && !!WI.debuggerManager.blackboxDataForSourceCode(sourceCodeLocation.sourceCode);
-        return new WI.CallFrame(target, id, sourceCodeLocation, functionName, thisObject, scopeChain, nativeCode, programCode, isTailDeleted, blackboxed);
+        return new WI.CallFrame(target, {
+            sourceCodeLocation,
+            functionName: WI.CallFrame.functionNameFromPayload(payload),
+            nativeCode,
+            programCode: WI.CallFrame.programCodeFromPayload(payload),
+            blackboxed: sourceCodeLocation && !!WI.debuggerManager.blackboxDataForSourceCode(sourceCodeLocation.sourceCode),
+        });
     }
 };

Modified: branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Models/StackTrace.js (288518 => 288519)


--- branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Models/StackTrace.js	2022-01-25 01:56:10 UTC (rev 288518)
+++ branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Models/StackTrace.js	2022-01-25 01:56:15 UTC (rev 288519)
@@ -25,9 +25,10 @@
 
 WI.StackTrace = class StackTrace
 {
-    constructor(callFrames, topCallFrameIsBoundary, truncated, parentStackTrace)
+    constructor(callFrames, {topCallFrameIsBoundary, truncated, parentStackTrace} = {})
     {
-        console.assert(callFrames && callFrames.every((callFrame) => callFrame instanceof WI.CallFrame));
+        console.assert(callFrames.every((callFrame) => callFrame instanceof WI.CallFrame), callFrames);
+        console.assert(!parentStackTrace || parentStackTrace instanceof WI.StackTrace, parentStackTrace);
 
         this._callFrames = callFrames;
         this._topCallFrameIsBoundary = topCallFrameIsBoundary || false;
@@ -44,7 +45,10 @@
 
         while (payload) {
             let callFrames = payload.callFrames.map((x) => WI.CallFrame.fromPayload(target, x));
-            let stackTrace = new WI.StackTrace(callFrames, payload.topCallFrameIsBoundary, payload.truncated);
+            let stackTrace = new WI.StackTrace(callFrames, {
+                topCallFrameIsBoundary: payload.topCallFrameIsBoundary,
+                truncated: payload.truncated,
+            });
             if (!result)
                 result = stackTrace;
             if (previousStackTrace)
@@ -160,12 +164,12 @@
 
                 // Save the first non-native non-anonymous call frame so it can be used as a
                 // fallback if all remaining call frames are blackboxed.
-                firstNonNativeNonAnonymousCallFrame = frame;
-
-                if (WI.debuggerManager.blackboxDataForSourceCode(sourceCode))
-                    continue;
+                firstNonNativeNonAnonymousCallFrame ??= frame;
             }
 
+            if (frame.blackboxed)
+                continue;
+
             return frame;
         }
 

Modified: branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Views/CallFrameTreeElement.js (288518 => 288519)


--- branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Views/CallFrameTreeElement.js	2022-01-25 01:56:10 UTC (rev 288518)
+++ branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Views/CallFrameTreeElement.js	2022-01-25 01:56:15 UTC (rev 288519)
@@ -57,8 +57,7 @@
             this.tooltipHandledSeparately = true;
         }
 
-        this._isBlackboxed = WI.debuggerManager.blackboxDataForSourceCode(this._callFrame.sourceCodeLocation.sourceCode);
-        if (this._isBlackboxed) {
+        if (this._callFrame.blackboxed) {
             this.addClassName("blackboxed");
             this.tooltipHandledSeparately = true;
         }
@@ -98,7 +97,7 @@
             let tooltipPrefix = this.mainTitle + tailCallSuffix + "\n";
 
             let tooltipSuffix = "";
-            if (this._isBlackboxed)
+            if (this._callFrame.blackboxed)
                 tooltipSuffix += "\n\n" + WI.UIString("Script ignored due to blackbox");
 
             this._callFrame.sourceCodeLocation.populateLiveDisplayLocationTooltip(this.element, tooltipPrefix, tooltipSuffix);

Modified: branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Views/CallFrameView.js (288518 => 288519)


--- branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Views/CallFrameView.js	2022-01-25 01:56:10 UTC (rev 288518)
+++ branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Views/CallFrameView.js	2022-01-25 01:56:15 UTC (rev 288519)
@@ -38,7 +38,7 @@
         var sourceCodeLocation = callFrame.sourceCodeLocation;
         if (sourceCodeLocation) {
             if (indicateIfBlackboxed)
-                callFrameElement.classList.toggle("blackboxed", WI.debuggerManager.blackboxDataForSourceCode(callFrame.sourceCodeLocation.sourceCode));
+                callFrameElement.classList.toggle("blackboxed", callFrame.blackboxed);
 
             WI.linkifyElement(callFrameElement, sourceCodeLocation, {
                 ignoreNetworkTab: true,

Modified: branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Views/ThreadTreeElement.js (288518 => 288519)


--- branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Views/ThreadTreeElement.js	2022-01-25 01:56:10 UTC (rev 288518)
+++ branches/safari-613-branch/Source/WebInspectorUI/UserInterface/Views/ThreadTreeElement.js	2022-01-25 01:56:15 UTC (rev 288519)
@@ -110,9 +110,10 @@
                 console.assert(boundaryCallFrame.nativeCode && !boundaryCallFrame.sourceCodeLocation);
             } else {
                 // Create a generic native CallFrame for the asynchronous boundary.
-                const functionName = WI.UIString("(async)");
-                const nativeCode = true;
-                boundaryCallFrame = new WI.CallFrame(null, null, null, functionName, null, null, nativeCode);
+                boundaryCallFrame = new WI.CallFrame(this._target, {
+                    functionName: WI.UIString("(async)"),
+                    nativeCode: true,
+                });
             }
 
             const isAsyncBoundaryCallFrame = true;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to