OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 7864 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7875 CompileRun( | 7875 CompileRun( |
7876 "var r;" | 7876 "var r;" |
7877 "p.chain(function() { r = 'resolved'; }," | 7877 "p.chain(function() { r = 'resolved'; }," |
7878 " function(e) { r = 'rejected' + e; });"); | 7878 " function(e) { r = 'rejected' + e; });"); |
7879 CHECK( | 7879 CHECK( |
7880 CompileRun("r")->Equals(context, v8_str("rejectedrejection")).FromJust()); | 7880 CompileRun("r")->Equals(context, v8_str("rejectedrejection")).FromJust()); |
7881 CHECK_EQ(1, exception_event_counter); | 7881 CHECK_EQ(1, exception_event_counter); |
7882 } | 7882 } |
7883 | 7883 |
7884 | 7884 |
7885 TEST(DebugBreakOnExceptionInObserveCallback) { | |
7886 i::FLAG_harmony_object_observe = true; | |
7887 DebugLocalContext env; | |
7888 v8::Isolate* isolate = env->GetIsolate(); | |
7889 v8::HandleScope scope(isolate); | |
7890 v8::Debug::SetDebugEventListener(isolate, &DebugEventCountException); | |
7891 v8::Local<v8::Context> context = env.context(); | |
7892 // Break on uncaught exception | |
7893 ChangeBreakOnException(false, true); | |
7894 exception_event_counter = 0; | |
7895 | |
7896 v8::Local<v8::FunctionTemplate> fun = | |
7897 v8::FunctionTemplate::New(isolate, ThrowCallback); | |
7898 CHECK(env->Global() | |
7899 ->Set(context, v8_str("fun"), | |
7900 fun->GetFunction(context).ToLocalChecked()) | |
7901 .FromJust()); | |
7902 | |
7903 CompileRun( | |
7904 "var obj = {};" | |
7905 "var callbackRan = false;" | |
7906 "Object.observe(obj, function() {" | |
7907 " callbackRan = true;" | |
7908 " throw Error('foo');" | |
7909 "});" | |
7910 "obj.prop = 1"); | |
7911 CHECK(CompileRun("callbackRan")->BooleanValue(context).FromJust()); | |
7912 CHECK_EQ(1, exception_event_counter); | |
7913 } | |
7914 | |
7915 | |
7916 static void DebugHarmonyScopingListener( | 7885 static void DebugHarmonyScopingListener( |
7917 const v8::Debug::EventDetails& event_details) { | 7886 const v8::Debug::EventDetails& event_details) { |
7918 v8::DebugEvent event = event_details.GetEvent(); | 7887 v8::DebugEvent event = event_details.GetEvent(); |
7919 if (event != v8::Break) return; | 7888 if (event != v8::Break) return; |
7920 | 7889 |
7921 int break_id = CcTest::i_isolate()->debug()->break_id(); | 7890 int break_id = CcTest::i_isolate()->debug()->break_id(); |
7922 | 7891 |
7923 char script[128]; | 7892 char script[128]; |
7924 i::Vector<char> script_vector(script, sizeof(script)); | 7893 i::Vector<char> script_vector(script, sizeof(script)); |
7925 SNPrintF(script_vector, "%%GetFrameCount(%d)", break_id); | 7894 SNPrintF(script_vector, "%%GetFrameCount(%d)", break_id); |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8211 "function foo() {\n" | 8180 "function foo() {\n" |
8212 " try { throw new Error(); } catch (e) {}\n" | 8181 " try { throw new Error(); } catch (e) {}\n" |
8213 "}\n" | 8182 "}\n" |
8214 "debugger;\n" | 8183 "debugger;\n" |
8215 "foo();\n" | 8184 "foo();\n" |
8216 "foo();\n"); | 8185 "foo();\n"); |
8217 | 8186 |
8218 v8::Debug::SetDebugEventListener(env->GetIsolate(), nullptr); | 8187 v8::Debug::SetDebugEventListener(env->GetIsolate(), nullptr); |
8219 CHECK_EQ(break_point_hit_count, 4); | 8188 CHECK_EQ(break_point_hit_count, 4); |
8220 } | 8189 } |
OLD | NEW |