summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/WebCore/inspector/front-end/ScriptsPanel.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/WebCore/inspector/front-end/ScriptsPanel.js')
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ScriptsPanel.js29
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()