diff options
Diffstat (limited to 'src/3rdparty/webkit/WebCore/inspector/front-end/ScriptsPanel.js')
-rw-r--r-- | src/3rdparty/webkit/WebCore/inspector/front-end/ScriptsPanel.js | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/src/3rdparty/webkit/WebCore/inspector/front-end/ScriptsPanel.js b/src/3rdparty/webkit/WebCore/inspector/front-end/ScriptsPanel.js index 7af9292..d30c002 100644 --- a/src/3rdparty/webkit/WebCore/inspector/front-end/ScriptsPanel.js +++ b/src/3rdparty/webkit/WebCore/inspector/front-end/ScriptsPanel.js @@ -316,17 +316,36 @@ WebInspector.ScriptsPanel.prototype = { sourceFrame.removeBreakpoint(breakpoint); }, - evaluateInSelectedCallFrame: function(code, updateInterface) + evaluateInSelectedCallFrame: function(code, updateInterface, callback) { var selectedCallFrame = this.sidebarPanes.callstack.selectedCallFrame; if (!this._paused || !selectedCallFrame) return; + if (typeof updateInterface === "undefined") updateInterface = true; - var result = selectedCallFrame.evaluate(code); - if (updateInterface) - this.sidebarPanes.scopechain.update(selectedCallFrame); - return result; + + var self = this; + function updatingCallbackWrapper(result) + { + callback(result); + if (updateInterface) + self.sidebarPanes.scopechain.update(selectedCallFrame); + } + this.doEvalInCallFrame(selectedCallFrame, code, updatingCallbackWrapper); + }, + + doEvalInCallFrame: function(callFrame, code, callback) + { + function delayedEvaluation() + { + try { + callback(callFrame.evaluate(code)); + } catch (e) { + callback(e, true); + } + } + setTimeout(delayedEvaluation, 0); }, variablesInScopeForSelectedCallFrame: function() |