diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebInspectorUI/UserInterface/Views/CallFrameView.js | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebInspectorUI/UserInterface/Views/CallFrameView.js')
-rw-r--r-- | Source/WebInspectorUI/UserInterface/Views/CallFrameView.js | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/Source/WebInspectorUI/UserInterface/Views/CallFrameView.js b/Source/WebInspectorUI/UserInterface/Views/CallFrameView.js new file mode 100644 index 000000000..e7ac8543a --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Views/CallFrameView.js @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.CallFrameView = class CallFrameView extends WebInspector.Object +{ + constructor(callFrame, showFunctionName) + { + console.assert(callFrame instanceof WebInspector.CallFrame); + + var callFrameElement = document.createElement("div"); + callFrameElement.classList.add("call-frame", WebInspector.CallFrameView.iconClassNameForCallFrame(callFrame)); + + var subtitleElement = document.createElement("span"); + subtitleElement.classList.add("subtitle"); + + var sourceCodeLocation = callFrame.sourceCodeLocation; + if (sourceCodeLocation) { + WebInspector.linkifyElement(callFrameElement, sourceCodeLocation); + + var linkElement = document.createElement("a"); + linkElement.classList.add("source-link"); + linkElement.href = sourceCodeLocation.sourceCode.url; + + if (showFunctionName) { + var separatorElement = document.createElement("span"); + separatorElement.classList.add("separator"); + separatorElement.textContent = " — "; + subtitleElement.append(separatorElement); + } + + subtitleElement.append(linkElement); + + sourceCodeLocation.populateLiveDisplayLocationTooltip(linkElement); + sourceCodeLocation.populateLiveDisplayLocationString(linkElement, "textContent"); + } + + var titleElement = document.createElement("span"); + titleElement.classList.add("title"); + + if (showFunctionName) { + var imgElement = document.createElement("img"); + imgElement.classList.add("icon"); + + titleElement.append(imgElement, callFrame.functionName || WebInspector.UIString("(anonymous function)")); + } + + callFrameElement.append(titleElement, subtitleElement); + + return callFrameElement; + } + + static iconClassNameForCallFrame(callFrame) + { + if (callFrame.isTailDeleted) + return WebInspector.CallFrameView.TailDeletedIcon; + + if (callFrame.programCode) + return WebInspector.CallFrameView.ProgramIconStyleClassName; + + // This is more than likely an event listener function with an "on" prefix and it is + // as long or longer than the shortest event listener name -- "oncut". + if (callFrame.functionName && callFrame.functionName.startsWith("on") && callFrame.functionName.length >= 5) + return WebInspector.CallFrameView.EventListenerIconStyleClassName; + + if (callFrame.nativeCode) + return WebInspector.CallFrameView.NativeIconStyleClassName; + + return WebInspector.CallFrameView.FunctionIconStyleClassName; + } +}; + +WebInspector.CallFrameView.ProgramIconStyleClassName = "program-icon"; +WebInspector.CallFrameView.FunctionIconStyleClassName = "function-icon"; +WebInspector.CallFrameView.EventListenerIconStyleClassName = "event-listener-icon"; +WebInspector.CallFrameView.NativeIconStyleClassName = "native-icon"; +WebInspector.CallFrameView.TailDeletedIcon = "tail-deleted"; |