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

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

Issue 1812983002: [DevTools] Move evaluate from InjectedScriptSource.js to native (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move-evaluate-on-call-frame
Patch Set: Removed _callFrameForId 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 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
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()->compileAndRunInternalScript(isolate->GetCurrentContex t(), expression).ToLocal(&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)
291 {
292 v8::Isolate* isolate = info.GetIsolate();
293 returnValue->Set(v8::String::NewFromUtf8(isolate, "result"), tryCatch.Except ion());
294 returnValue->Set(v8::String::NewFromUtf8(isolate, "exceptionDetails"), JavaS criptCallFrame::createExceptionDetails(isolate, tryCatch.Message()));
295 v8SetReturnValue(info, returnValue);
296 }
297
298 void V8InjectedScriptHost::evaluateWithExceptionDetailsCallback(const v8::Functi onCallbackInfo<v8::Value>& info)
299 {
300 v8::Isolate* isolate = info.GetIsolate();
301 if (info.Length() < 1) {
302 isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8(iso late, "One argument expected.")));
303 return;
304 }
305
306 v8::Local<v8::String> expression = info[0]->ToString(isolate);
307 if (expression.IsEmpty()) {
308 isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8(iso late, "The argument must be a string.")));
309 return;
310 }
311
312 ASSERT(isolate->InContext());
313 v8::Local<v8::Object> wrappedResult = v8::Object::New(isolate);
314 if (wrappedResult.IsEmpty())
315 return;
316
317 v8::TryCatch tryCatch(isolate);
318 v8::Local<v8::Context> context = isolate->GetCurrentContext();
319 InjectedScriptHost* host = V8InjectedScriptHost::unwrap(context, info.Holder ());
320 if (!host->debugger())
321 return;
322
323 v8::Local<v8::Script> script = host->debugger()->compileInternalScript(conte xt, expression, String16());
324 if (script.IsEmpty()) {
325 setExceptionAsReturnValue(info, wrappedResult, tryCatch);
326 return;
327 }
328
329 v8::Local<v8::Symbol> scopeExtensionSymbolValue = V8Debugger::scopeExtension Symbol(isolate);
330 v8::Local<v8::Object> global = context->Global();
331 if (info.Length() >= 2 && info[1]->IsObject()) {
332 v8::Local<v8::Object> commandLineAPI = info[1]->ToObject(isolate);
333 global->Set(scopeExtensionSymbolValue, commandLineAPI);
334 }
335
336 v8::MaybeLocal<v8::Value> result = host->debugger()->runCompiledScript(conte xt, script);
337 if (result.IsEmpty()) {
338 global->Delete(context, scopeExtensionSymbolValue);
339 setExceptionAsReturnValue(info, wrappedResult, tryCatch);
340 return;
341 }
342
343 global->Delete(context, scopeExtensionSymbolValue);
344 wrappedResult->Set(v8::String::NewFromUtf8(isolate, "result"), result.ToLoca lChecked());
345 wrappedResult->Set(v8::String::NewFromUtf8(isolate, "exceptionDetails"), v8: :Undefined(isolate));
346 v8SetReturnValue(info, wrappedResult);
347 }
348
349 static bool getFunctionLocation(const v8::FunctionCallbackInfo<v8::Value>& info, String16* scriptId, int* lineNumber, int* columnNumber) 290 static bool getFunctionLocation(const v8::FunctionCallbackInfo<v8::Value>& info, String16* scriptId, int* lineNumber, int* columnNumber)
350 { 291 {
351 if (info.Length() < 1 || !info[0]->IsFunction()) 292 if (info.Length() < 1 || !info[0]->IsFunction())
352 return false; 293 return false;
353 v8::Local<v8::Function> function = v8::Local<v8::Function>::Cast(info[0]); 294 v8::Local<v8::Function> function = v8::Local<v8::Function>::Cast(info[0]);
354 *lineNumber = function->GetScriptLineNumber(); 295 *lineNumber = function->GetScriptLineNumber();
355 *columnNumber = function->GetScriptColumnNumber(); 296 *columnNumber = function->GetScriptColumnNumber();
356 if (*lineNumber == v8::Function::kLineOffsetNotFound || *columnNumber == v8: :Function::kLineOffsetNotFound) 297 if (*lineNumber == v8::Function::kLineOffsetNotFound || *columnNumber == v8: :Function::kLineOffsetNotFound)
357 return false; 298 return false;
358 *scriptId = String16::number(function->ScriptId()); 299 *scriptId = String16::number(function->ScriptId());
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 {"inspectedObject", V8InjectedScriptHost::inspectedObjectCallback}, 491 {"inspectedObject", V8InjectedScriptHost::inspectedObjectCallback},
551 {"internalConstructorName", V8InjectedScriptHost::internalConstructorNameCal lback}, 492 {"internalConstructorName", V8InjectedScriptHost::internalConstructorNameCal lback},
552 {"formatAccessorsAsProperties", V8InjectedScriptHost::formatAccessorsAsPrope rties}, 493 {"formatAccessorsAsProperties", V8InjectedScriptHost::formatAccessorsAsPrope rties},
553 {"isTypedArray", V8InjectedScriptHost::isTypedArrayCallback}, 494 {"isTypedArray", V8InjectedScriptHost::isTypedArrayCallback},
554 {"subtype", V8InjectedScriptHost::subtypeCallback}, 495 {"subtype", V8InjectedScriptHost::subtypeCallback},
555 {"functionDetails", V8InjectedScriptHost::functionDetailsCallback}, 496 {"functionDetails", V8InjectedScriptHost::functionDetailsCallback},
556 {"collectionEntries", V8InjectedScriptHost::collectionEntriesCallback}, 497 {"collectionEntries", V8InjectedScriptHost::collectionEntriesCallback},
557 {"getInternalProperties", V8InjectedScriptHost::getInternalPropertiesCallbac k}, 498 {"getInternalProperties", V8InjectedScriptHost::getInternalPropertiesCallbac k},
558 {"getEventListeners", V8InjectedScriptHost::getEventListenersCallback}, 499 {"getEventListeners", V8InjectedScriptHost::getEventListenersCallback},
559 {"eval", V8InjectedScriptHost::evalCallback}, 500 {"eval", V8InjectedScriptHost::evalCallback},
560 {"evaluateWithExceptionDetails", V8InjectedScriptHost::evaluateWithException DetailsCallback},
561 {"debugFunction", V8InjectedScriptHost::debugFunctionCallback}, 501 {"debugFunction", V8InjectedScriptHost::debugFunctionCallback},
562 {"undebugFunction", V8InjectedScriptHost::undebugFunctionCallback}, 502 {"undebugFunction", V8InjectedScriptHost::undebugFunctionCallback},
563 {"monitorFunction", V8InjectedScriptHost::monitorFunctionCallback}, 503 {"monitorFunction", V8InjectedScriptHost::monitorFunctionCallback},
564 {"unmonitorFunction", V8InjectedScriptHost::unmonitorFunctionCallback}, 504 {"unmonitorFunction", V8InjectedScriptHost::unmonitorFunctionCallback},
565 {"callFunction", V8InjectedScriptHost::callFunctionCallback}, 505 {"callFunction", V8InjectedScriptHost::callFunctionCallback},
566 {"suppressWarningsAndCallFunction", V8InjectedScriptHost::suppressWarningsAn dCallFunctionCallback}, 506 {"suppressWarningsAndCallFunction", V8InjectedScriptHost::suppressWarningsAn dCallFunctionCallback},
567 {"setNonEnumProperty", V8InjectedScriptHost::setNonEnumPropertyCallback}, 507 {"setNonEnumProperty", V8InjectedScriptHost::setNonEnumPropertyCallback},
568 {"bind", V8InjectedScriptHost::bindCallback}, 508 {"bind", V8InjectedScriptHost::bindCallback},
569 {"objectForId", V8InjectedScriptHost::objectForIdCallback}, 509 {"objectForId", V8InjectedScriptHost::objectForIdCallback},
570 {"idToObjectGroupName", V8InjectedScriptHost::idToObjectGroupNameCallback}, 510 {"idToObjectGroupName", V8InjectedScriptHost::idToObjectGroupNameCallback},
(...skipping 13 matching lines...) Expand all
584 { 524 {
585 return InjectedScriptHostWrapper::wrap(constructorTemplate, context, host); 525 return InjectedScriptHostWrapper::wrap(constructorTemplate, context, host);
586 } 526 }
587 527
588 InjectedScriptHost* V8InjectedScriptHost::unwrap(v8::Local<v8::Context> context, v8::Local<v8::Object> object) 528 InjectedScriptHost* V8InjectedScriptHost::unwrap(v8::Local<v8::Context> context, v8::Local<v8::Object> object)
589 { 529 {
590 return InjectedScriptHostWrapper::unwrap(context, object); 530 return InjectedScriptHostWrapper::unwrap(context, object);
591 } 531 }
592 532
593 } // namespace blink 533 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698