OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007-2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2007-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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 #include "bindings/core/v8/custom/V8Int8ArrayCustom.h" | 51 #include "bindings/core/v8/custom/V8Int8ArrayCustom.h" |
52 #include "bindings/core/v8/custom/V8Uint16ArrayCustom.h" | 52 #include "bindings/core/v8/custom/V8Uint16ArrayCustom.h" |
53 #include "bindings/core/v8/custom/V8Uint32ArrayCustom.h" | 53 #include "bindings/core/v8/custom/V8Uint32ArrayCustom.h" |
54 #include "bindings/core/v8/custom/V8Uint8ArrayCustom.h" | 54 #include "bindings/core/v8/custom/V8Uint8ArrayCustom.h" |
55 #include "bindings/core/v8/custom/V8Uint8ClampedArrayCustom.h" | 55 #include "bindings/core/v8/custom/V8Uint8ClampedArrayCustom.h" |
56 #include "core/events/EventTarget.h" | 56 #include "core/events/EventTarget.h" |
57 #include "core/frame/LocalDOMWindow.h" | 57 #include "core/frame/LocalDOMWindow.h" |
58 #include "core/inspector/InjectedScript.h" | 58 #include "core/inspector/InjectedScript.h" |
59 #include "core/inspector/InjectedScriptHost.h" | 59 #include "core/inspector/InjectedScriptHost.h" |
60 #include "core/inspector/InspectorDOMAgent.h" | 60 #include "core/inspector/InspectorDOMAgent.h" |
| 61 #include "core/inspector/JavaScriptCallFrame.h" |
61 #include "platform/JSONValues.h" | 62 #include "platform/JSONValues.h" |
62 | 63 |
63 namespace WebCore { | 64 namespace WebCore { |
64 | 65 |
65 Node* InjectedScriptHost::scriptValueAsNode(ScriptState* scriptState, ScriptValu
e value) | 66 Node* InjectedScriptHost::scriptValueAsNode(ScriptState* scriptState, ScriptValu
e value) |
66 { | 67 { |
67 ScriptState::Scope scope(scriptState); | 68 ScriptState::Scope scope(scriptState); |
68 if (!value.isObject() || value.isNull()) | 69 if (!value.isObject() || value.isNull()) |
69 return 0; | 70 return 0; |
70 return V8Node::toNative(v8::Handle<v8::Object>::Cast(value.v8Value())); | 71 return V8Node::toNative(v8::Handle<v8::Object>::Cast(value.v8Value())); |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 if (info.Length() < 2) | 329 if (info.Length() < 2) |
329 return; | 330 return; |
330 | 331 |
331 InjectedScriptHost* host = V8InjectedScriptHost::toNative(info.Holder()); | 332 InjectedScriptHost* host = V8InjectedScriptHost::toNative(info.Holder()); |
332 ScriptState* scriptState = ScriptState::current(info.GetIsolate()); | 333 ScriptState* scriptState = ScriptState::current(info.GetIsolate()); |
333 ScriptValue object(scriptState, info[0]); | 334 ScriptValue object(scriptState, info[0]); |
334 ScriptValue hints(scriptState, info[1]); | 335 ScriptValue hints(scriptState, info[1]); |
335 host->inspectImpl(object.toJSONValue(scriptState), hints.toJSONValue(scriptS
tate)); | 336 host->inspectImpl(object.toJSONValue(scriptState), hints.toJSONValue(scriptS
tate)); |
336 } | 337 } |
337 | 338 |
338 void V8InjectedScriptHost::evaluateMethodCustom(const v8::FunctionCallbackInfo<v
8::Value>& info) | 339 void V8InjectedScriptHost::evalMethodCustom(const v8::FunctionCallbackInfo<v8::V
alue>& info) |
339 { | 340 { |
340 v8::Isolate* isolate = info.GetIsolate(); | 341 v8::Isolate* isolate = info.GetIsolate(); |
341 if (info.Length() < 1) { | 342 if (info.Length() < 1) { |
342 isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8(iso
late, "One argument expected."))); | 343 isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8(iso
late, "One argument expected."))); |
343 return; | 344 return; |
344 } | 345 } |
345 | 346 |
346 v8::Handle<v8::String> expression = info[0]->ToString(); | 347 v8::Handle<v8::String> expression = info[0]->ToString(); |
347 if (expression.IsEmpty()) { | 348 if (expression.IsEmpty()) { |
348 isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8(iso
late, "The argument must be a string."))); | 349 isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8(iso
late, "The argument must be a string."))); |
349 return; | 350 return; |
350 } | 351 } |
351 | 352 |
352 ASSERT(isolate->InContext()); | 353 ASSERT(isolate->InContext()); |
353 v8::TryCatch tryCatch; | 354 v8::TryCatch tryCatch; |
354 v8::Handle<v8::Value> result = V8ScriptRunner::compileAndRunInternalScript(e
xpression, info.GetIsolate()); | 355 v8::Handle<v8::Value> result = V8ScriptRunner::compileAndRunInternalScript(e
xpression, info.GetIsolate()); |
355 if (tryCatch.HasCaught()) { | 356 if (tryCatch.HasCaught()) { |
356 v8SetReturnValue(info, tryCatch.ReThrow()); | 357 v8SetReturnValue(info, tryCatch.ReThrow()); |
357 return; | 358 return; |
358 } | 359 } |
359 v8SetReturnValue(info, result); | 360 v8SetReturnValue(info, result); |
360 } | 361 } |
361 | 362 |
| 363 void V8InjectedScriptHost::evaluateWithExceptionDetailsMethodCustom(const v8::Fu
nctionCallbackInfo<v8::Value>& info) |
| 364 { |
| 365 v8::Isolate* isolate = info.GetIsolate(); |
| 366 if (info.Length() < 1) { |
| 367 isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8(iso
late, "One argument expected."))); |
| 368 return; |
| 369 } |
| 370 |
| 371 v8::Handle<v8::String> expression = info[0]->ToString(); |
| 372 if (expression.IsEmpty()) { |
| 373 isolate->ThrowException(v8::Exception::Error(v8::String::NewFromUtf8(iso
late, "The argument must be a string."))); |
| 374 return; |
| 375 } |
| 376 |
| 377 ASSERT(isolate->InContext()); |
| 378 v8::TryCatch tryCatch; |
| 379 v8::Handle<v8::Value> result = V8ScriptRunner::compileAndRunInternalScript(e
xpression, info.GetIsolate()); |
| 380 |
| 381 v8::Local<v8::Object> wrappedResult = v8::Object::New(isolate); |
| 382 if (tryCatch.HasCaught()) { |
| 383 wrappedResult->Set(v8::String::NewFromUtf8(isolate, "result"), tryCatch.
Exception()); |
| 384 wrappedResult->Set(v8::String::NewFromUtf8(isolate, "exceptionDetails"),
JavaScriptCallFrame::createExceptionDetails(tryCatch.Message(), isolate)); |
| 385 } else { |
| 386 wrappedResult->Set(v8::String::NewFromUtf8(isolate, "result"), result); |
| 387 wrappedResult->Set(v8::String::NewFromUtf8(isolate, "exceptionDetails"),
v8::Undefined(isolate)); |
| 388 } |
| 389 v8SetReturnValue(info, wrappedResult); |
| 390 } |
| 391 |
362 void V8InjectedScriptHost::setFunctionVariableValueMethodCustom(const v8::Functi
onCallbackInfo<v8::Value>& info) | 392 void V8InjectedScriptHost::setFunctionVariableValueMethodCustom(const v8::Functi
onCallbackInfo<v8::Value>& info) |
363 { | 393 { |
364 v8::Handle<v8::Value> functionValue = info[0]; | 394 v8::Handle<v8::Value> functionValue = info[0]; |
365 int scopeIndex = info[1]->Int32Value(); | 395 int scopeIndex = info[1]->Int32Value(); |
366 String variableName = toCoreStringWithUndefinedOrNullCheck(info[2]); | 396 String variableName = toCoreStringWithUndefinedOrNullCheck(info[2]); |
367 v8::Handle<v8::Value> newValue = info[3]; | 397 v8::Handle<v8::Value> newValue = info[3]; |
368 | 398 |
369 InjectedScriptHost* host = V8InjectedScriptHost::toNative(info.Holder()); | 399 InjectedScriptHost* host = V8InjectedScriptHost::toNative(info.Holder()); |
370 ScriptDebugServer& debugServer = host->scriptDebugServer(); | 400 ScriptDebugServer& debugServer = host->scriptDebugServer(); |
371 v8SetReturnValue(info, debugServer.setFunctionVariableValue(functionValue, s
copeIndex, variableName, newValue)); | 401 v8SetReturnValue(info, debugServer.setFunctionVariableValue(functionValue, s
copeIndex, variableName, newValue)); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
458 OwnPtr<v8::Handle<v8::Value>[]> argv = adoptArrayPtr(new v8::Handle<v8::Valu
e>[argc]); | 488 OwnPtr<v8::Handle<v8::Value>[]> argv = adoptArrayPtr(new v8::Handle<v8::Valu
e>[argc]); |
459 for (size_t i = 0; i < argc; ++i) | 489 for (size_t i = 0; i < argc; ++i) |
460 argv[i] = info[i + 2]; | 490 argv[i] = info[i + 2]; |
461 | 491 |
462 v8::Local<v8::Value> result = function->Call(receiver, argc, argv.get()); | 492 v8::Local<v8::Value> result = function->Call(receiver, argc, argv.get()); |
463 debugServer.unmuteWarningsAndDeprecations(); | 493 debugServer.unmuteWarningsAndDeprecations(); |
464 v8SetReturnValue(info, result); | 494 v8SetReturnValue(info, result); |
465 } | 495 } |
466 | 496 |
467 } // namespace WebCore | 497 } // namespace WebCore |
OLD | NEW |