Reviewed by Timothy.
authorthatcher <thatcher@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 13 Jul 2006 07:11:23 +0000 (07:11 +0000)
committerthatcher <thatcher@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 13 Jul 2006 07:11:23 +0000 (07:11 +0000)
        Bug 9889: [Drosera] Stepping out when paused after last statement in function skips a frame
        http://bugzilla.opendarwin.org/show_bug.cgi?id=9889

        * Drosera/debugger.js:  Track whether we paused during the execution of willLeaveFrame.  If
        so, have stepOut pause on the next call to willExecuteStatement rather than second.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@15403 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/Drosera/debugger.js

index bd560a4..5ee8dce 100644 (file)
@@ -1,3 +1,13 @@
+2006-07-13  Mark Rowe  <opendarwin.org@bdash.net.nz>
+
+        Reviewed by Timothy.
+
+        Bug 9889: [Drosera] Stepping out when paused after last statement in function skips a frame
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=9889
+
+        * Drosera/debugger.js:  Track whether we paused during the execution of willLeaveFrame.  If
+        so, have stepOut pause on the next call to willExecuteStatement rather than second.
+
 2006-07-12  David Kilzer  <ddkilzer@kilzer.net>
 
         Reviewed by Darin.
index 88ab436..18f0d91 100644 (file)
@@ -41,6 +41,7 @@ var steppingOut = false;
 var steppingOver = false;
 var steppingStack = 0;
 var pauseOnNextStatement = false;
+var pausedWhileLeavingFrame = false;
 var consoleWindow = null;
 
 ScriptCallFrame = function (functionName, index, row)
@@ -249,6 +250,7 @@ function resume()
     currentCallFrame = null;
 
     pauseOnNextStatement = false;
+    pausedWhileLeavingFrame = false;
     steppingOut = false;
     steppingOver = false;
     steppingStack = 0;
@@ -275,7 +277,7 @@ function stepOver()
 
 function stepOut()
 {
-    pauseOnNextStatement = false;
+    pauseOnNextStatement = pausedWhileLeavingFrame;
     steppingOver = false;
     steppingStack = 0;
     steppingOut = true;
@@ -783,7 +785,7 @@ function didParseScript(source, fileSource, url, sourceId, baseLineNumber)
         loadFile(fileIndex, true);
 }
 
-function willExecuteStatement(sourceId, line)
+function willExecuteStatement(sourceId, line, fromLeavingFrame)
 {
     var script = scripts[sourceId];
     if (line <= 0 || !script)
@@ -796,6 +798,7 @@ function willExecuteStatement(sourceId, line)
     if (pauseOnNextStatement || file.breakpoints[line] == 1 || (steppingOver && !steppingStack)) {
         pause();
         pauseOnNextStatement = false;
+        pausedWhileLeavingFrame = fromLeavingFrame || false;
     }
 
     if (isPaused()) {
@@ -836,7 +839,7 @@ function willLeaveCallFrame(sourceId, line)
 {
     if (line <= 0)
         resume();
-    willExecuteStatement(sourceId, line);
+    willExecuteStatement(sourceId, line, true);
     if (!steppingStack)
         steppingOver = false;
     if (steppingOut && !steppingStack) {