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

Side by Side Diff: third_party/WebKit/Source/platform/v8_inspector/V8InjectedScriptHost.cpp

Issue 1769273004: Remove V8RecrusionScope, cleanup call sites. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "platform/v8_inspector/V8InjectedScriptHost.h" 5 #include "platform/v8_inspector/V8InjectedScriptHost.h"
6 6
7 #include "platform/inspector_protocol/String16.h" 7 #include "platform/inspector_protocol/String16.h"
8 #include "platform/inspector_protocol/Values.h" 8 #include "platform/inspector_protocol/Values.h"
9 #include "platform/v8_inspector/InjectedScript.h" 9 #include "platform/v8_inspector/InjectedScript.h"
10 #include "platform/v8_inspector/InjectedScriptHost.h" 10 #include "platform/v8_inspector/InjectedScriptHost.h"
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8(iso late, "The argument must be a string."))); 273 isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8(iso late, "The argument must be a string.")));
274 return; 274 return;
275 } 275 }
276 276
277 ASSERT(isolate->InContext()); 277 ASSERT(isolate->InContext());
278 v8::TryCatch tryCatch(isolate); 278 v8::TryCatch tryCatch(isolate);
279 v8::Local<v8::Value> result; 279 v8::Local<v8::Value> result;
280 InjectedScriptHost* host = V8InjectedScriptHost::unwrap(isolate->GetCurrentC ontext(), info.Holder()); 280 InjectedScriptHost* host = V8InjectedScriptHost::unwrap(isolate->GetCurrentC ontext(), info.Holder());
281 if (!host->debugger()) 281 if (!host->debugger())
282 return; 282 return;
283 if (!host->debugger()->client()->compileAndRunInternalScript(expression).ToL ocal(&result)) { 283 if (!host->debugger()->compileAndRunInternalScript(isolate->GetCurrentContex t(), expression).ToLocal(&result)) {
284 v8SetReturnValue(info, tryCatch.ReThrow()); 284 v8SetReturnValue(info, tryCatch.ReThrow());
285 return; 285 return;
286 } 286 }
287 v8SetReturnValue(info, result); 287 v8SetReturnValue(info, result);
288 } 288 }
289 289
290 static void setExceptionAsReturnValue(const v8::FunctionCallbackInfo<v8::Value>& info, v8::Local<v8::Object> returnValue, v8::TryCatch& tryCatch) 290 static void setExceptionAsReturnValue(const v8::FunctionCallbackInfo<v8::Value>& info, v8::Local<v8::Object> returnValue, v8::TryCatch& tryCatch)
291 { 291 {
292 v8::Isolate* isolate = info.GetIsolate(); 292 v8::Isolate* isolate = info.GetIsolate();
293 returnValue->Set(v8::String::NewFromUtf8(isolate, "result"), tryCatch.Except ion()); 293 returnValue->Set(v8::String::NewFromUtf8(isolate, "result"), tryCatch.Except ion());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 return; 326 return;
327 } 327 }
328 328
329 v8::Local<v8::Symbol> commandLineAPISymbolValue = V8Debugger::commandLineAPI Symbol(isolate); 329 v8::Local<v8::Symbol> commandLineAPISymbolValue = V8Debugger::commandLineAPI Symbol(isolate);
330 v8::Local<v8::Object> global = context->Global(); 330 v8::Local<v8::Object> global = context->Global();
331 if (info.Length() >= 2 && info[1]->IsObject()) { 331 if (info.Length() >= 2 && info[1]->IsObject()) {
332 v8::Local<v8::Object> commandLineAPI = info[1]->ToObject(isolate); 332 v8::Local<v8::Object> commandLineAPI = info[1]->ToObject(isolate);
333 global->Set(commandLineAPISymbolValue, commandLineAPI); 333 global->Set(commandLineAPISymbolValue, commandLineAPI);
334 } 334 }
335 335
336 v8::MaybeLocal<v8::Value> result = host->debugger()->client()->runCompiledSc ript(context, script); 336 v8::MaybeLocal<v8::Value> result = host->debugger()->runCompiledScript(conte xt, script);
337 if (result.IsEmpty()) { 337 if (result.IsEmpty()) {
338 global->Delete(context, commandLineAPISymbolValue); 338 global->Delete(context, commandLineAPISymbolValue);
339 setExceptionAsReturnValue(info, wrappedResult, tryCatch); 339 setExceptionAsReturnValue(info, wrappedResult, tryCatch);
340 return; 340 return;
341 } 341 }
342 342
343 global->Delete(context, commandLineAPISymbolValue); 343 global->Delete(context, commandLineAPISymbolValue);
344 wrappedResult->Set(v8::String::NewFromUtf8(isolate, "result"), result.ToLoca lChecked()); 344 wrappedResult->Set(v8::String::NewFromUtf8(isolate, "result"), result.ToLoca lChecked());
345 wrappedResult->Set(v8::String::NewFromUtf8(isolate, "exceptionDetails"), v8: :Undefined(isolate)); 345 wrappedResult->Set(v8::String::NewFromUtf8(isolate, "exceptionDetails"), v8: :Undefined(isolate));
346 v8SetReturnValue(info, wrappedResult); 346 v8SetReturnValue(info, wrappedResult);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 host->unmonitorFunction(scriptId, lineNumber, columnNumber); 415 host->unmonitorFunction(scriptId, lineNumber, columnNumber);
416 } 416 }
417 417
418 void V8InjectedScriptHost::callFunctionCallback(const v8::FunctionCallbackInfo<v 8::Value>& info) 418 void V8InjectedScriptHost::callFunctionCallback(const v8::FunctionCallbackInfo<v 8::Value>& info)
419 { 419 {
420 if (info.Length() < 2 || info.Length() > 3 || !info[0]->IsFunction()) { 420 if (info.Length() < 2 || info.Length() > 3 || !info[0]->IsFunction()) {
421 ASSERT_NOT_REACHED(); 421 ASSERT_NOT_REACHED();
422 return; 422 return;
423 } 423 }
424 424
425 v8::MicrotasksScope microtasks(info.GetIsolate(), v8::MicrotasksScope::kDoNo tRunMicrotasks);
425 v8::Local<v8::Function> function = v8::Local<v8::Function>::Cast(info[0]); 426 v8::Local<v8::Function> function = v8::Local<v8::Function>::Cast(info[0]);
426 v8::Local<v8::Value> receiver = info[1]; 427 v8::Local<v8::Value> receiver = info[1];
427 428
428 if (info.Length() < 3 || info[2]->IsUndefined()) { 429 if (info.Length() < 3 || info[2]->IsUndefined()) {
429 v8::Local<v8::Value> result = function->Call(receiver, 0, 0); 430 v8::Local<v8::Value> result = function->Call(receiver, 0, 0);
430 v8SetReturnValue(info, result); 431 v8SetReturnValue(info, result);
431 return; 432 return;
432 } 433 }
433 434
434 if (!info[2]->IsArray()) { 435 if (!info[2]->IsArray()) {
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 } // namespace 573 } // namespace
573 574
574 v8::Local<v8::FunctionTemplate> V8InjectedScriptHost::createWrapperTemplate(v8:: Isolate* isolate) 575 v8::Local<v8::FunctionTemplate> V8InjectedScriptHost::createWrapperTemplate(v8:: Isolate* isolate)
575 { 576 {
576 protocol::Vector<InspectorWrapperBase::V8MethodConfiguration> methods(WTF_AR RAY_LENGTH(V8InjectedScriptHostMethods)); 577 protocol::Vector<InspectorWrapperBase::V8MethodConfiguration> methods(WTF_AR RAY_LENGTH(V8InjectedScriptHostMethods));
577 std::copy(V8InjectedScriptHostMethods, V8InjectedScriptHostMethods + WTF_ARR AY_LENGTH(V8InjectedScriptHostMethods), methods.begin()); 578 std::copy(V8InjectedScriptHostMethods, V8InjectedScriptHostMethods + WTF_ARR AY_LENGTH(V8InjectedScriptHostMethods), methods.begin());
578 protocol::Vector<InspectorWrapperBase::V8AttributeConfiguration> attributes; 579 protocol::Vector<InspectorWrapperBase::V8AttributeConfiguration> attributes;
579 return InjectedScriptHostWrapper::createWrapperTemplate(isolate, methods, at tributes); 580 return InjectedScriptHostWrapper::createWrapperTemplate(isolate, methods, at tributes);
580 } 581 }
581 582
582 v8::Local<v8::Object> V8InjectedScriptHost::wrap(V8DebuggerClient* client, v8::L ocal<v8::FunctionTemplate> constructorTemplate, v8::Local<v8::Context> context, InjectedScriptHost* host) 583 v8::Local<v8::Object> V8InjectedScriptHost::wrap(v8::Local<v8::FunctionTemplate> constructorTemplate, v8::Local<v8::Context> context, InjectedScriptHost* host)
583 { 584 {
584 return InjectedScriptHostWrapper::wrap(client, constructorTemplate, context, host); 585 return InjectedScriptHostWrapper::wrap(constructorTemplate, context, host);
585 } 586 }
586 587
587 InjectedScriptHost* V8InjectedScriptHost::unwrap(v8::Local<v8::Context> context, v8::Local<v8::Object> object) 588 InjectedScriptHost* V8InjectedScriptHost::unwrap(v8::Local<v8::Context> context, v8::Local<v8::Object> object)
588 { 589 {
589 return InjectedScriptHostWrapper::unwrap(context, object); 590 return InjectedScriptHostWrapper::unwrap(context, object);
590 } 591 }
591 592
592 } // namespace blink 593 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698