Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / Source / devtools / front_end / components / DebuggerPresentationUtils.js
blobb5719fc399fbe26bf579420ef7018f4120cab769
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 WebInspector.DebuggerPresentationUtils = {}
7 /**
8  * @param {?WebInspector.DebuggerModel} debuggerModel
9  * @param {!Array.<!ConsoleAgent.CallFrame>=} stackTrace
10  * @param {!ConsoleAgent.AsyncStackTrace=} asyncStackTrace
11  * @param {boolean=} showBlackboxed
12  * @return {?ConsoleAgent.CallFrame}
13  */
14 WebInspector.DebuggerPresentationUtils.callFrameAnchorFromStackTrace = function(debuggerModel, stackTrace, asyncStackTrace, showBlackboxed)
16     /**
17      * @param {?Array.<!ConsoleAgent.CallFrame>=} stackTrace
18      * @return {?ConsoleAgent.CallFrame}
19      */
20     function innerCallFrameAnchorFromStackTrace(stackTrace)
21     {
22         if (!stackTrace || !stackTrace.length)
23             return null;
24         if (showBlackboxed)
25             return stackTrace[0];
26         for (var i = 0; i < stackTrace.length; ++i) {
27             var script = debuggerModel && debuggerModel.scriptForId(stackTrace[i].scriptId);
28             var blackboxed = script ?
29                 WebInspector.BlackboxSupport.isBlackboxed(script.sourceURL, script.isContentScript()) :
30                 WebInspector.BlackboxSupport.isBlackboxedURL(stackTrace[i].url);
31             if (!blackboxed)
32                 return stackTrace[i];
33         }
34         return null;
35     }
37     var callFrame = innerCallFrameAnchorFromStackTrace(stackTrace);
38     if (callFrame)
39         return callFrame;
41     while (asyncStackTrace) {
42         callFrame = innerCallFrameAnchorFromStackTrace(asyncStackTrace.callFrames);
43         if (callFrame)
44             return callFrame;
45         asyncStackTrace = asyncStackTrace.asyncStackTrace;
46     }
48     return stackTrace ? stackTrace[0] : null;