Changeset 194083 in webkit


Ignore:
Timestamp:
Dec 14, 2015 5:14:34 PM (8 years ago)
Author:
commit-queue@webkit.org
Message:

Web Inspector: Stack traces in console incorrectly show "(anonymous function)" for global code
https://bugs.webkit.org/show_bug.cgi?id=152280

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-12-14
Reviewed by Brian Burg.

Source/WebInspectorUI:

  • UserInterface/Images/Program.svg: Added.
  • UserInterface/Images/gtk/Program.svg: Added.

Copied from TimelineRecordScriptEvaluated.svg.

  • UserInterface/Models/CallFrame.js:

(WebInspector.CallFrame):
(WebInspector.CallFrame.prototype.get programCode):
Add a new property to check if this call frame is in program code.

(WebInspector.CallFrame.fromPayload):
Detect different sources of program code (global, eval, module).

  • UserInterface/Views/CallFrameIcons.css:

(.program-icon .icon):

  • UserInterface/Views/CallFrameView.js:

(WebInspector.CallFrameView.iconClassNameForCallFrame):
Give program code the [S] global script icon like in profiles.

LayoutTests:

  • inspector/debugger/js-stacktrace-expected.txt:
  • inspector/debugger/js-stacktrace.html:
Location:
trunk
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r194082 r194083  
     12015-12-14  Joseph Pecoraro  <pecoraro@apple.com>
     2
     3        Web Inspector: Stack traces in console incorrectly show "(anonymous function)" for global code
     4        https://bugs.webkit.org/show_bug.cgi?id=152280
     5
     6        Reviewed by Brian Burg.
     7
     8        * inspector/debugger/js-stacktrace-expected.txt:
     9        * inspector/debugger/js-stacktrace.html:
     10
    1112015-12-14  Ryan Haddad  <ryanhaddad@apple.com>
    212
  • trunk/LayoutTests/inspector/debugger/js-stacktrace-expected.txt

    r190780 r194083  
    77        "columnNumber": 22,
    88        "functionName": "typeError",
    9         "nativeCode": false
     9        "nativeCode": false,
     10        "programCode": false
    1011    },
    1112    {
     
    1314        "columnNumber": 21,
    1415        "functionName": "typeErrorWrap",
    15         "nativeCode": false
     16        "nativeCode": false,
     17        "programCode": false
     18    },
     19    {
     20        "lineNumber": null,
     21        "columnNumber": null,
     22        "functionName": "eval code",
     23        "nativeCode": true,
     24        "programCode": true
    1625    }
    1726]
     
    3039        "lineNumber": 7,
    3140        "columnNumber": 21
     41    },
     42    {
     43        "functionName": "eval code",
     44        "url": "",
     45        "lineNumber": 0,
     46        "columnNumber": 0
    3247    }
    3348]
     
    3954        "columnNumber": 22,
    4055        "functionName": "typeError",
    41         "nativeCode": false
     56        "nativeCode": false,
     57        "programCode": false
    4258    },
    4359    {
     
    4561        "columnNumber": null,
    4662        "functionName": "map",
    47         "nativeCode": true
     63        "nativeCode": true,
     64        "programCode": false
    4865    },
    4966    {
     
    5168        "columnNumber": 20,
    5269        "functionName": "testWithNativeCallInBetween",
    53         "nativeCode": false
     70        "nativeCode": false,
     71        "programCode": false
     72    },
     73    {
     74        "lineNumber": null,
     75        "columnNumber": null,
     76        "functionName": "eval code",
     77        "nativeCode": true,
     78        "programCode": true
    5479    }
    5580]
     
    7499        "lineNumber": 23,
    75100        "columnNumber": 20
     101    },
     102    {
     103        "functionName": "eval code",
     104        "url": "",
     105        "lineNumber": 0,
     106        "columnNumber": 0
    76107    }
    77108]
  • trunk/LayoutTests/inspector/debugger/js-stacktrace.html

    r190780 r194083  
    5454                columnNumber: columnNumber,
    5555                functionName: callFrame.functionName,
    56                 nativeCode: callFrame.nativeCode
     56                nativeCode: callFrame.nativeCode,
     57                programCode: callFrame.programCode,
    5758            });
    5859        }
     
    113114        var index = 0;
    114115        for (var frame of stackTrace) {
    115             if (frame.nativeCode && frame.functionName === null)
     116            index++;
     117            if (frame.nativeCode && frame.functionName === "eval code")
    116118                break;
    117             index++;
    118119        }
    119120        return stackTrace.slice(0, index);
     
    124125        var index = 0;
    125126        for (var frame of payload) {
     127            index++;
    126128            if (frame.functionName === "eval code")
    127129                break;
    128             index++;
    129130        }
    130131        return payload.slice(0, index);
  • trunk/Source/WebInspectorUI/ChangeLog

    r194066 r194083  
     12015-12-14  Joseph Pecoraro  <pecoraro@apple.com>
     2
     3        Web Inspector: Stack traces in console incorrectly show "(anonymous function)" for global code
     4        https://bugs.webkit.org/show_bug.cgi?id=152280
     5
     6        Reviewed by Brian Burg.
     7
     8        * UserInterface/Images/Program.svg: Added.
     9        * UserInterface/Images/gtk/Program.svg: Added.
     10        Copied from TimelineRecordScriptEvaluated.svg.
     11
     12        * UserInterface/Models/CallFrame.js:
     13        (WebInspector.CallFrame):
     14        (WebInspector.CallFrame.prototype.get programCode):
     15        Add a new property to check if this call frame is in program code.
     16
     17        (WebInspector.CallFrame.fromPayload):
     18        Detect different sources of program code (global, eval, module).
     19
     20        * UserInterface/Views/CallFrameIcons.css:
     21        (.program-icon .icon):
     22        * UserInterface/Views/CallFrameView.js:
     23        (WebInspector.CallFrameView.iconClassNameForCallFrame):
     24        Give program code the [S] global script icon like in profiles.
     25
    1262015-12-14  Joseph Pecoraro  <pecoraro@apple.com>
    227
  • trunk/Source/WebInspectorUI/UserInterface/Models/CallFrame.js

    r188017 r194083  
    2626WebInspector.CallFrame = class CallFrame extends WebInspector.Object
    2727{
    28     constructor(id, sourceCodeLocation, functionName, thisObject, scopeChain, nativeCode)
     28    constructor(id, sourceCodeLocation, functionName, thisObject, scopeChain, nativeCode, programCode)
    2929    {
    3030        super();
     
    4040        this._scopeChain = scopeChain || [];
    4141        this._nativeCode = nativeCode || false;
     42        this._programCode = programCode || false;
    4243    }
    4344
     
    6263    {
    6364        return this._nativeCode;
     65    }
     66
     67    get programCode()
     68    {
     69        return this._programCode;
    6470    }
    6571
     
    109115        var url = payload.url;
    110116        var nativeCode = false;
     117        var programCode = false;
    111118        var sourceCodeLocation = null;
    112119
     
    126133        }
    127134
    128         var functionName = null;
    129         if (payload.functionName !== "global code" && payload.functionName !== "eval code")
    130             functionName = payload.functionName;
     135        var functionName = payload.functionName;
     136        if (payload.functionName === "global code"
     137            || payload.functionName === "eval code"
     138            || payload.functionName === "module code")
     139            programCode = true;
    131140
    132         return new WebInspector.CallFrame(null, sourceCodeLocation, functionName, null, null, nativeCode);
     141        return new WebInspector.CallFrame(null, sourceCodeLocation, functionName, null, null, nativeCode, programCode);
    133142    }
    134143};
  • trunk/Source/WebInspectorUI/UserInterface/Views/CallFrameIcons.css

    r164543 r194083  
    2424 */
    2525
     26.program-icon .icon {
     27    content: url(../Images/Program.svg);
     28}
     29
    2630.function-icon .icon {
    2731    content: url(../Images/Function.svg);
  • trunk/Source/WebInspectorUI/UserInterface/Views/CallFrameView.js

    r188017 r194083  
    7474    static iconClassNameForCallFrame(callFrame)
    7575    {
     76        if (callFrame.programCode)
     77            return WebInspector.CallFrameView.ProgramIconStyleClassName;
     78
    7679        // This is more than likely an event listener function with an "on" prefix and it is
    7780        // as long or longer than the shortest event listener name -- "oncut".
     
    8689};
    8790
     91WebInspector.CallFrameView.ProgramIconStyleClassName = "program-icon";
    8892WebInspector.CallFrameView.FunctionIconStyleClassName = "function-icon";
    8993WebInspector.CallFrameView.EventListenerIconStyleClassName = "event-listener-icon";
Note: See TracChangeset for help on using the changeset viewer.