Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(115)

Unified Diff: test/mjsunit/es6/debug-stepin-microtasks.js

Issue 739523002: Allow stepping into Object.observe handlers. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/mjsunit/debug-stepin-foreach.js ('k') | test/mjsunit/es6/debug-stepin-promises.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/es6/debug-stepin-microtasks.js
diff --git a/test/mjsunit/es6/debug-stepin-promises.js b/test/mjsunit/es6/debug-stepin-microtasks.js
similarity index 58%
rename from test/mjsunit/es6/debug-stepin-promises.js
rename to test/mjsunit/es6/debug-stepin-microtasks.js
index 2db6b66946302cab0458c0397c1682667cd2f08e..8dbdb3457ab8e6828e3adc9b4f6cfb5caf2fd05d 100644
--- a/test/mjsunit/es6/debug-stepin-promises.js
+++ b/test/mjsunit/es6/debug-stepin-microtasks.js
@@ -7,27 +7,29 @@
Debug = debug.Debug
var exception = null;
var break_count = 0;
-var expected_breaks = 7;
+var expected_breaks = -1;
function listener(event, exec_state, event_data, data) {
try {
if (event == Debug.DebugEvent.Break) {
assertTrue(exec_state.frameCount() != 0, "FAIL: Empty stack trace");
+ if (!break_count) {
+ // Count number of expected breakpoints in this source file.
+ var source_text = exec_state.frame(0).func().script().source();
+ expected_breaks = source_text.match(/\/\/\s*Break\s+\d+\./g).length;
+ print("Expected breaks: " + expected_breaks);
+ }
var source = exec_state.frame(0).sourceLineText();
print("paused at: " + source);
assertTrue(source.indexOf("// Break " + break_count + ".") > 0,
- "Unexpected pause at: " + source);
+ "Unexpected pause at: " + source + "\n" +
+ "Expected: // Break " + break_count + ".");
if (source.indexOf("StepOver.") !== -1) {
exec_state.prepareStep(Debug.StepAction.StepNext, 1);
} else {
exec_state.prepareStep(Debug.StepAction.StepIn, 1);
}
++break_count;
- } else if (event == Debug.DebugEvent.AsyncTaskEvent &&
- event_data.type() === "willHandle" &&
- event_data.name() !== "Object.observe" &&
- break_count > 0) {
- exec_state.prepareStep(Debug.StepAction.StepIn, 1);
}
} catch (e) {
exception = e;
@@ -42,30 +44,49 @@ Promise.resolve(42)
.then(Object) // Should skip stepping into native.
.then(Boolean) // Should skip stepping into native.
.then(promise2)
- .then(undefined, promise3)
+ .catch(promise3)
.catch(function(e) {
%AbortJS("FAIL: uncaught exception " + e);
});
-function promise1()
-{
+function promise1() {
debugger; // Break 0.
return exception || 1; // Break 1.
} // Break 2.
-function promise2()
-{
+function promise2() {
throw new Error; // Break 3.
}
-function promise3()
-{
- finalize(); // Break 4. StepOver.
+function promise3() {
+ installObservers(); // Break 4. StepOver.
return break_count; // Break 5.
} // Break 6.
-function finalize()
-{
+function installObservers() {
+ var dummy = {};
+ Object.observe(dummy, observer1);
+ Object.observe(dummy, Object); // Should skip stepping into native.
+ Object.observe(dummy, Boolean); // Should skip stepping into native.
+ Object.observe(dummy, observer2);
+ dummy.foo = 1;
+}
+
+function observer1() {
+ return exception || 3; // Break 7.
+} // Break 8.
+
+function observer2() {
+ Promise.resolve().then(promise4); // Break 9. StepOver.
+ return break_count + 1; // Break 10.
+} // Break 11.
+
+function promise4() {
+ finalize(); // Break 12. StepOver.
+ return 0; // Break 13.
+} // Break 14. StepOver.
+
+function finalize() {
var dummy = {};
Object.observe(dummy, function() {
if (expected_breaks !== break_count) {
« no previous file with comments | « test/mjsunit/debug-stepin-foreach.js ('k') | test/mjsunit/es6/debug-stepin-promises.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698