Index: test/cctest/test-debug.cc |
=================================================================== |
--- test/cctest/test-debug.cc (revision 2022) |
+++ test/cctest/test-debug.cc (working copy) |
@@ -4817,7 +4817,7 @@ |
v8::HandleScope scope; |
DebugLocalContext env; |
- // Request the loaded scripte to initialize the debugger script cache. |
+ // Request the loaded scripts to initialize the debugger script cache. |
Debug::GetLoadedScripts(); |
// Do garbage collection to ensure that only the script in this test will be |
@@ -4841,3 +4841,49 @@ |
v8::Debug::SetDebugEventListener(NULL); |
CheckDebuggerUnloaded(); |
} |
+ |
+ |
+// Debug event listener which counts the script collected events. |
+int script_collected_message_count = 0; |
+static void ScriptCollectedMessageHandler(const v8::Debug::Message& message) { |
+ // Count the number of scripts collected. |
+ if (message.IsEvent() && message.GetEvent() == v8::ScriptCollected) { |
+ script_collected_message_count++; |
+ v8::Handle<v8::Context> context = message.GetEventContext(); |
+ CHECK(context.IsEmpty()); |
+ } |
+} |
+ |
+ |
+// Test that GetEventContext doesn't fail and return empty handle for |
+// ScriptCollected events. |
+TEST(ScriptCollectedEventContext) { |
+ break_point_hit_count = 0; |
+ v8::HandleScope scope; |
+ |
+ { // Scope for the DebugLocalContext. |
+ DebugLocalContext env; |
+ |
+ // Request the loaded scripts to initialize the debugger script cache. |
+ Debug::GetLoadedScripts(); |
+ |
+ // Do garbage collection to ensure that only the script in this test will be |
+ // collected afterwards. |
+ Heap::CollectAllGarbage(); |
+ |
+ script_collected_count = 0; |
+ v8::Debug::SetMessageHandler2(ScriptCollectedMessageHandler); |
+ { |
+ v8::Script::Compile(v8::String::New("eval('a=1')"))->Run(); |
+ v8::Script::Compile(v8::String::New("eval('a=2')"))->Run(); |
+ } |
+ } |
+ |
+ // Do garbage collection to collect the script above which is no longer |
+ // referenced. |
+ Heap::CollectAllGarbage(); |
+ |
+ CHECK_EQ(2, script_collected_message_count); |
+ |
+ v8::Debug::SetMessageHandler2(NULL); |
+} |