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

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 596 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 607
608 void ScriptDebugServer::ensureDebuggerScriptCompiled() 608 void ScriptDebugServer::ensureDebuggerScriptCompiled()
609 { 609 {
610 if (!m_debuggerScript.IsEmpty()) 610 if (!m_debuggerScript.IsEmpty())
611 return; 611 return;
612 612
613 v8::HandleScope scope(m_isolate); 613 v8::HandleScope scope(m_isolate);
614 v8::Context::Scope contextScope(v8::Debug::GetDebugContext()); 614 v8::Context::Scope contextScope(v8::Debug::GetDebugContext());
615 const blink::WebData& debuggerScriptSourceResource = blink::Platform::curren t()->loadResource("DebuggerScriptSource.js"); 615 const blink::WebData& debuggerScriptSourceResource = blink::Platform::curren t()->loadResource("DebuggerScriptSource.js");
616 v8::Handle<v8::String> source = v8String(m_isolate, String(debuggerScriptSou rceResource.data(), debuggerScriptSourceResource.size())); 616 v8::Handle<v8::String> source = v8String(m_isolate, String(debuggerScriptSou rceResource.data(), debuggerScriptSourceResource.size()));
617 v8::Local<v8::Value> value = V8ScriptRunner::compileAndRunInternalScript(sou rce, m_isolate); 617 v8::Local<v8::Value> value = V8ScriptRunner::compileAndRunInternalScript(sou rce, m_isolate).ToLocalChecked();
haraken 2015/03/18 01:58:51 Wouldn't it be better to use ToLocal and return ea
bashi 2015/03/18 02:33:11 Will do.
618 ASSERT(!value.IsEmpty());
619 ASSERT(value->IsObject()); 618 ASSERT(value->IsObject());
620 m_debuggerScript.Reset(m_isolate, v8::Handle<v8::Object>::Cast(value)); 619 m_debuggerScript.Reset(m_isolate, v8::Handle<v8::Object>::Cast(value));
621 } 620 }
622 621
623 void ScriptDebugServer::discardDebuggerScript() 622 void ScriptDebugServer::discardDebuggerScript()
624 { 623 {
625 ASSERT(!m_debuggerScript.IsEmpty()); 624 ASSERT(!m_debuggerScript.IsEmpty());
626 m_debuggerScript.Reset(); 625 m_debuggerScript.Reset();
627 } 626 }
628 627
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 } 689 }
691 690
692 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) 691 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)
693 { 692 {
694 if (!scriptState->contextIsValid()) 693 if (!scriptState->contextIsValid())
695 return; 694 return;
696 ScriptState::Scope scope(scriptState); 695 ScriptState::Scope scope(scriptState);
697 696
698 v8::Handle<v8::String> source = v8String(m_isolate, expression); 697 v8::Handle<v8::String> source = v8String(m_isolate, expression);
699 v8::TryCatch tryCatch; 698 v8::TryCatch tryCatch;
700 v8::Local<v8::Script> script = V8ScriptRunner::compileScript(source, sourceU RL, String(), TextPosition(), m_isolate); 699 v8::Local<v8::Script> script;
701 if (tryCatch.HasCaught()) { 700 if (!v8Call(V8ScriptRunner::compileScript(source, sourceURL, String(), TextP osition(), m_isolate), script, tryCatch)) {
702 v8::Local<v8::Message> message = tryCatch.Message(); 701 v8::Local<v8::Message> message = tryCatch.Message();
703 if (!message.IsEmpty()) { 702 if (!message.IsEmpty()) {
704 *exceptionDetailsText = toCoreStringWithUndefinedOrNullCheck(message ->Get()); 703 *exceptionDetailsText = toCoreStringWithUndefinedOrNullCheck(message ->Get());
705 *lineNumber = message->GetLineNumber(); 704 *lineNumber = message->GetLineNumber();
706 *columnNumber = message->GetStartColumn(); 705 *columnNumber = message->GetStartColumn();
707 v8::Handle<v8::StackTrace> messageStackTrace = message->GetStackTrac e(); 706 v8::Handle<v8::StackTrace> messageStackTrace = message->GetStackTrac e();
708 if (!messageStackTrace.IsEmpty() && messageStackTrace->GetFrameCount () > 0) 707 if (!messageStackTrace.IsEmpty() && messageStackTrace->GetFrameCount () > 0)
709 *stackTrace = createScriptCallStack(m_isolate, messageStackTrace , messageStackTrace->GetFrameCount()); 708 *stackTrace = createScriptCallStack(m_isolate, messageStackTrace , messageStackTrace->GetFrameCount());
710 } 709 }
711 return; 710 return;
712 } 711 }
713 if (script.IsEmpty() || !persistScript) 712 if (!persistScript)
714 return; 713 return;
715 714
716 *scriptId = String::number(script->GetUnboundScript()->GetId()); 715 *scriptId = String::number(script->GetUnboundScript()->GetId());
717 m_compiledScripts.Set(*scriptId, script); 716 m_compiledScripts.Set(*scriptId, script);
718 } 717 }
719 718
720 void ScriptDebugServer::clearCompiledScripts() 719 void ScriptDebugServer::clearCompiledScripts()
721 { 720 {
722 m_compiledScripts.Clear(); 721 m_compiledScripts.Clear();
723 } 722 }
724 723
725 void ScriptDebugServer::runScript(ScriptState* scriptState, const String& script Id, ScriptValue* result, bool* wasThrown, String* exceptionDetailsText, int* lin eNumber, int* columnNumber, RefPtrWillBeRawPtr<ScriptCallStack>* stackTrace) 724 void ScriptDebugServer::runScript(ScriptState* scriptState, const String& script Id, ScriptValue* result, bool* wasThrown, String* exceptionDetailsText, int* lin eNumber, int* columnNumber, RefPtrWillBeRawPtr<ScriptCallStack>* stackTrace)
726 { 725 {
727 if (!m_compiledScripts.Contains(scriptId)) 726 if (!m_compiledScripts.Contains(scriptId))
728 return; 727 return;
729 v8::HandleScope handleScope(m_isolate); 728 v8::HandleScope handleScope(m_isolate);
730 v8::Local<v8::Script> script = v8::Local<v8::Script>::New(m_isolate, m_compi ledScripts.Remove(scriptId)); 729 v8::Local<v8::Script> script = v8::Local<v8::Script>::New(m_isolate, m_compi ledScripts.Remove(scriptId));
731 if (script.IsEmpty()) 730 if (script.IsEmpty())
732 return; 731 return;
733 732
734 if (!scriptState->contextIsValid()) 733 if (!scriptState->contextIsValid())
735 return; 734 return;
736 ScriptState::Scope scope(scriptState); 735 ScriptState::Scope scope(scriptState);
737 v8::TryCatch tryCatch; 736 v8::TryCatch tryCatch;
738 v8::Local<v8::Value> value = V8ScriptRunner::runCompiledScript(m_isolate, sc ript, scriptState->executionContext()); 737 v8::Local<v8::Value> value;
739 *wasThrown = false; 738 *wasThrown = false;
740 if (tryCatch.HasCaught()) { 739 if (v8Call(V8ScriptRunner::runCompiledScript(m_isolate, script, scriptState- >executionContext()), value, tryCatch)) {
740 *result = ScriptValue(scriptState, value);
741 } else {
742 if (!tryCatch.HasCaught())
haraken 2015/03/18 01:58:51 Can this happen? In V8BindingMacros.h, you're add
bashi 2015/03/18 02:33:11 Oh, I forgot to remove this. Will remove.
743 return;
741 *wasThrown = true; 744 *wasThrown = true;
742 *result = ScriptValue(scriptState, tryCatch.Exception()); 745 *result = ScriptValue(scriptState, tryCatch.Exception());
743 v8::Local<v8::Message> message = tryCatch.Message(); 746 v8::Local<v8::Message> message = tryCatch.Message();
744 if (!message.IsEmpty()) { 747 if (!message.IsEmpty()) {
745 *exceptionDetailsText = toCoreStringWithUndefinedOrNullCheck(message ->Get()); 748 *exceptionDetailsText = toCoreStringWithUndefinedOrNullCheck(message ->Get());
746 *lineNumber = message->GetLineNumber(); 749 *lineNumber = message->GetLineNumber();
747 *columnNumber = message->GetStartColumn(); 750 *columnNumber = message->GetStartColumn();
748 v8::Handle<v8::StackTrace> messageStackTrace = message->GetStackTrac e(); 751 v8::Handle<v8::StackTrace> messageStackTrace = message->GetStackTrac e();
749 if (!messageStackTrace.IsEmpty() && messageStackTrace->GetFrameCount () > 0) 752 if (!messageStackTrace.IsEmpty() && messageStackTrace->GetFrameCount () > 0)
750 *stackTrace = createScriptCallStack(m_isolate, messageStackTrace , messageStackTrace->GetFrameCount()); 753 *stackTrace = createScriptCallStack(m_isolate, messageStackTrace , messageStackTrace->GetFrameCount());
751 } 754 }
752 } else {
753 *result = ScriptValue(scriptState, value);
754 } 755 }
755 } 756 }
756 757
757 } // namespace blink 758 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698