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

Side by Side Diff: Source/bindings/core/v8/ScriptDebugServer.cpp

Issue 1003043002: bindings: Use Maybe APIs in V8ScriptRunner (part 1) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 9 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2010-2011 Google Inc. All rights reserved. 2 * Copyright (c) 2010-2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 640
641 void ScriptDebugServer::ensureDebuggerScriptCompiled() 641 void ScriptDebugServer::ensureDebuggerScriptCompiled()
642 { 642 {
643 if (!m_debuggerScript.IsEmpty()) 643 if (!m_debuggerScript.IsEmpty())
644 return; 644 return;
645 645
646 v8::HandleScope scope(m_isolate); 646 v8::HandleScope scope(m_isolate);
647 v8::Context::Scope contextScope(v8::Debug::GetDebugContext()); 647 v8::Context::Scope contextScope(v8::Debug::GetDebugContext());
648 const blink::WebData& debuggerScriptSourceResource = blink::Platform::curren t()->loadResource("DebuggerScriptSource.js"); 648 const blink::WebData& debuggerScriptSourceResource = blink::Platform::curren t()->loadResource("DebuggerScriptSource.js");
649 v8::Handle<v8::String> source = v8String(m_isolate, String(debuggerScriptSou rceResource.data(), debuggerScriptSourceResource.size())); 649 v8::Handle<v8::String> source = v8String(m_isolate, String(debuggerScriptSou rceResource.data(), debuggerScriptSourceResource.size()));
650 v8::Local<v8::Value> value = V8ScriptRunner::compileAndRunInternalScript(sou rce, m_isolate); 650 v8::Local<v8::Value> value;
651 ASSERT(!value.IsEmpty()); 651 if (!V8ScriptRunner::compileAndRunInternalScript(source, m_isolate).ToLocal( &value))
652 return;
652 ASSERT(value->IsObject()); 653 ASSERT(value->IsObject());
653 m_debuggerScript.Reset(m_isolate, v8::Handle<v8::Object>::Cast(value)); 654 m_debuggerScript.Reset(m_isolate, v8::Handle<v8::Object>::Cast(value));
654 } 655 }
655 656
656 void ScriptDebugServer::discardDebuggerScript() 657 void ScriptDebugServer::discardDebuggerScript()
657 { 658 {
658 ASSERT(!m_debuggerScript.IsEmpty()); 659 ASSERT(!m_debuggerScript.IsEmpty());
659 m_debuggerScript.Reset(); 660 m_debuggerScript.Reset();
660 } 661 }
661 662
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 } 724 }
724 725
725 void ScriptDebugServer::compileScript(ScriptState* scriptState, const String& ex pression, const String& sourceURL, bool persistScript, String* scriptId, String* exceptionDetailsText, int* lineNumber, int* columnNumber, RefPtrWillBeRawPtr<Sc riptCallStack>* stackTrace) 726 void ScriptDebugServer::compileScript(ScriptState* scriptState, const String& ex pression, const String& sourceURL, bool persistScript, String* scriptId, String* exceptionDetailsText, int* lineNumber, int* columnNumber, RefPtrWillBeRawPtr<Sc riptCallStack>* stackTrace)
726 { 727 {
727 if (!scriptState->contextIsValid()) 728 if (!scriptState->contextIsValid())
728 return; 729 return;
729 ScriptState::Scope scope(scriptState); 730 ScriptState::Scope scope(scriptState);
730 731
731 v8::Handle<v8::String> source = v8String(m_isolate, expression); 732 v8::Handle<v8::String> source = v8String(m_isolate, expression);
732 v8::TryCatch tryCatch; 733 v8::TryCatch tryCatch;
733 v8::Local<v8::Script> script = V8ScriptRunner::compileScript(source, sourceU RL, String(), TextPosition(), m_isolate); 734 v8::Local<v8::Script> script;
734 if (tryCatch.HasCaught()) { 735 if (!v8Call(V8ScriptRunner::compileScript(source, sourceURL, String(), TextP osition(), m_isolate), script, tryCatch)) {
735 v8::Local<v8::Message> message = tryCatch.Message(); 736 v8::Local<v8::Message> message = tryCatch.Message();
736 if (!message.IsEmpty()) { 737 if (!message.IsEmpty()) {
737 *exceptionDetailsText = toCoreStringWithUndefinedOrNullCheck(message ->Get()); 738 *exceptionDetailsText = toCoreStringWithUndefinedOrNullCheck(message ->Get());
738 *lineNumber = message->GetLineNumber(); 739 *lineNumber = message->GetLineNumber();
739 *columnNumber = message->GetStartColumn(); 740 *columnNumber = message->GetStartColumn();
740 v8::Handle<v8::StackTrace> messageStackTrace = message->GetStackTrac e(); 741 v8::Handle<v8::StackTrace> messageStackTrace = message->GetStackTrac e();
741 if (!messageStackTrace.IsEmpty() && messageStackTrace->GetFrameCount () > 0) 742 if (!messageStackTrace.IsEmpty() && messageStackTrace->GetFrameCount () > 0)
742 *stackTrace = createScriptCallStack(m_isolate, messageStackTrace , messageStackTrace->GetFrameCount()); 743 *stackTrace = createScriptCallStack(m_isolate, messageStackTrace , messageStackTrace->GetFrameCount());
743 } 744 }
744 return; 745 return;
745 } 746 }
746 if (script.IsEmpty() || !persistScript) 747 if (!persistScript)
747 return; 748 return;
748 749
749 *scriptId = String::number(script->GetUnboundScript()->GetId()); 750 *scriptId = String::number(script->GetUnboundScript()->GetId());
750 m_compiledScripts.Set(*scriptId, script); 751 m_compiledScripts.Set(*scriptId, script);
751 } 752 }
752 753
753 void ScriptDebugServer::clearCompiledScripts() 754 void ScriptDebugServer::clearCompiledScripts()
754 { 755 {
755 m_compiledScripts.Clear(); 756 m_compiledScripts.Clear();
756 } 757 }
757 758
758 void ScriptDebugServer::runScript(ScriptState* scriptState, const String& script Id, ScriptValue* result, bool* wasThrown, String* exceptionDetailsText, int* lin eNumber, int* columnNumber, RefPtrWillBeRawPtr<ScriptCallStack>* stackTrace) 759 void ScriptDebugServer::runScript(ScriptState* scriptState, const String& script Id, ScriptValue* result, bool* wasThrown, String* exceptionDetailsText, int* lin eNumber, int* columnNumber, RefPtrWillBeRawPtr<ScriptCallStack>* stackTrace)
759 { 760 {
760 if (!m_compiledScripts.Contains(scriptId)) 761 if (!m_compiledScripts.Contains(scriptId))
761 return; 762 return;
762 v8::HandleScope handleScope(m_isolate); 763 v8::HandleScope handleScope(m_isolate);
763 v8::Local<v8::Script> script = v8::Local<v8::Script>::New(m_isolate, m_compi ledScripts.Remove(scriptId)); 764 v8::Local<v8::Script> script = v8::Local<v8::Script>::New(m_isolate, m_compi ledScripts.Remove(scriptId));
764 if (script.IsEmpty()) 765 if (script.IsEmpty())
765 return; 766 return;
766 767
767 if (!scriptState->contextIsValid()) 768 if (!scriptState->contextIsValid())
768 return; 769 return;
769 ScriptState::Scope scope(scriptState); 770 ScriptState::Scope scope(scriptState);
770 v8::TryCatch tryCatch; 771 v8::TryCatch tryCatch;
771 v8::Local<v8::Value> value = V8ScriptRunner::runCompiledScript(m_isolate, sc ript, scriptState->executionContext()); 772 v8::Local<v8::Value> value;
772 *wasThrown = false; 773 *wasThrown = false;
773 if (tryCatch.HasCaught()) { 774 if (v8Call(V8ScriptRunner::runCompiledScript(m_isolate, script, scriptState- >executionContext()), value, tryCatch)) {
775 *result = ScriptValue(scriptState, value);
776 } else {
774 *wasThrown = true; 777 *wasThrown = true;
775 *result = ScriptValue(scriptState, tryCatch.Exception()); 778 *result = ScriptValue(scriptState, tryCatch.Exception());
776 v8::Local<v8::Message> message = tryCatch.Message(); 779 v8::Local<v8::Message> message = tryCatch.Message();
777 if (!message.IsEmpty()) { 780 if (!message.IsEmpty()) {
778 *exceptionDetailsText = toCoreStringWithUndefinedOrNullCheck(message ->Get()); 781 *exceptionDetailsText = toCoreStringWithUndefinedOrNullCheck(message ->Get());
779 *lineNumber = message->GetLineNumber(); 782 *lineNumber = message->GetLineNumber();
780 *columnNumber = message->GetStartColumn(); 783 *columnNumber = message->GetStartColumn();
781 v8::Handle<v8::StackTrace> messageStackTrace = message->GetStackTrac e(); 784 v8::Handle<v8::StackTrace> messageStackTrace = message->GetStackTrac e();
782 if (!messageStackTrace.IsEmpty() && messageStackTrace->GetFrameCount () > 0) 785 if (!messageStackTrace.IsEmpty() && messageStackTrace->GetFrameCount () > 0)
783 *stackTrace = createScriptCallStack(m_isolate, messageStackTrace , messageStackTrace->GetFrameCount()); 786 *stackTrace = createScriptCallStack(m_isolate, messageStackTrace , messageStackTrace->GetFrameCount());
784 } 787 }
785 } else {
786 *result = ScriptValue(scriptState, value);
787 } 788 }
788 } 789 }
789 790
790 } // namespace blink 791 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698