OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project 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 "src/inspector/V8InjectedScriptHost.h" | 5 #include "src/inspector/V8InjectedScriptHost.h" |
6 | 6 |
| 7 #include "src/base/macros.h" |
7 #include "src/inspector/InjectedScriptNative.h" | 8 #include "src/inspector/InjectedScriptNative.h" |
8 #include "src/inspector/StringUtil.h" | 9 #include "src/inspector/StringUtil.h" |
9 #include "src/inspector/V8Compat.h" | |
10 #include "src/inspector/V8Debugger.h" | 10 #include "src/inspector/V8Debugger.h" |
11 #include "src/inspector/V8InspectorImpl.h" | 11 #include "src/inspector/V8InspectorImpl.h" |
12 #include "src/inspector/V8InternalValueType.h" | 12 #include "src/inspector/V8InternalValueType.h" |
13 #include "src/inspector/V8ValueCopier.h" | 13 #include "src/inspector/V8ValueCopier.h" |
14 #include "src/inspector/public/V8InspectorClient.h" | 14 |
| 15 #include "include/v8-inspector.h" |
15 | 16 |
16 namespace v8_inspector { | 17 namespace v8_inspector { |
17 | 18 |
18 namespace { | 19 namespace { |
19 | 20 |
20 void setFunctionProperty(v8::Local<v8::Context> context, | 21 void setFunctionProperty(v8::Local<v8::Context> context, |
21 v8::Local<v8::Object> obj, const char* name, | 22 v8::Local<v8::Object> obj, const char* name, |
22 v8::FunctionCallback callback, | 23 v8::FunctionCallback callback, |
23 v8::Local<v8::External> external) { | 24 v8::Local<v8::External> external) { |
24 v8::Local<v8::String> funcName = | 25 v8::Local<v8::String> funcName = |
25 toV8StringInternalized(context->GetIsolate(), name); | 26 toV8StringInternalized(context->GetIsolate(), name); |
26 v8::Local<v8::Function> func; | 27 v8::Local<v8::Function> func; |
27 if (!V8_FUNCTION_NEW_REMOVE_PROTOTYPE(context, callback, external, 0) | 28 if (!v8::Function::New(context, callback, external, 0, |
| 29 v8::ConstructorBehavior::kThrow) |
28 .ToLocal(&func)) | 30 .ToLocal(&func)) |
29 return; | 31 return; |
30 func->SetName(funcName); | 32 func->SetName(funcName); |
31 createDataProperty(context, obj, funcName, func); | 33 createDataProperty(context, obj, funcName, func); |
32 } | 34 } |
33 | 35 |
34 V8InspectorImpl* unwrapInspector( | 36 V8InspectorImpl* unwrapInspector( |
35 const v8::FunctionCallbackInfo<v8::Value>& info) { | 37 const v8::FunctionCallbackInfo<v8::Value>& info) { |
36 DCHECK(!info.Data().IsEmpty()); | 38 DCHECK(!info.Data().IsEmpty()); |
37 DCHECK(info.Data()->IsExternal()); | 39 DCHECK(info.Data()->IsExternal()); |
38 V8InspectorImpl* inspector = | 40 V8InspectorImpl* inspector = |
39 static_cast<V8InspectorImpl*>(info.Data().As<v8::External>()->Value()); | 41 static_cast<V8InspectorImpl*>(info.Data().As<v8::External>()->Value()); |
40 DCHECK(inspector); | 42 DCHECK(inspector); |
41 return inspector; | 43 return inspector; |
42 } | 44 } |
43 | 45 |
44 } // namespace | 46 } // namespace |
45 | 47 |
46 v8::Local<v8::Object> V8InjectedScriptHost::create( | 48 v8::Local<v8::Object> V8InjectedScriptHost::create( |
47 v8::Local<v8::Context> context, V8InspectorImpl* inspector) { | 49 v8::Local<v8::Context> context, V8InspectorImpl* inspector) { |
48 v8::Isolate* isolate = inspector->isolate(); | 50 v8::Isolate* isolate = inspector->isolate(); |
49 v8::Local<v8::Object> injectedScriptHost = v8::Object::New(isolate); | 51 v8::Local<v8::Object> injectedScriptHost = v8::Object::New(isolate); |
50 bool success = injectedScriptHost->SetPrototype(context, v8::Null(isolate)) | 52 bool success = injectedScriptHost->SetPrototype(context, v8::Null(isolate)) |
51 .FromMaybe(false); | 53 .FromMaybe(false); |
52 DCHECK(success); | 54 DCHECK(success); |
| 55 USE(success); |
53 v8::Local<v8::External> debuggerExternal = | 56 v8::Local<v8::External> debuggerExternal = |
54 v8::External::New(isolate, inspector); | 57 v8::External::New(isolate, inspector); |
55 setFunctionProperty(context, injectedScriptHost, "internalConstructorName", | 58 setFunctionProperty(context, injectedScriptHost, "internalConstructorName", |
56 V8InjectedScriptHost::internalConstructorNameCallback, | 59 V8InjectedScriptHost::internalConstructorNameCallback, |
57 debuggerExternal); | 60 debuggerExternal); |
58 setFunctionProperty( | 61 setFunctionProperty( |
59 context, injectedScriptHost, "formatAccessorsAsProperties", | 62 context, injectedScriptHost, "formatAccessorsAsProperties", |
60 V8InjectedScriptHost::formatAccessorsAsProperties, debuggerExternal); | 63 V8InjectedScriptHost::formatAccessorsAsProperties, debuggerExternal); |
61 setFunctionProperty(context, injectedScriptHost, "subtype", | 64 setFunctionProperty(context, injectedScriptHost, "subtype", |
62 V8InjectedScriptHost::subtypeCallback, debuggerExternal); | 65 V8InjectedScriptHost::subtypeCallback, debuggerExternal); |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 | 194 |
192 v8::Local<v8::String> v8groupName = info[1]->ToString(info.GetIsolate()); | 195 v8::Local<v8::String> v8groupName = info[1]->ToString(info.GetIsolate()); |
193 String16 groupName = toProtocolStringWithTypeCheck(v8groupName); | 196 String16 groupName = toProtocolStringWithTypeCheck(v8groupName); |
194 int id = injectedScriptNative->bind(info[0], groupName); | 197 int id = injectedScriptNative->bind(info[0], groupName); |
195 info.GetReturnValue().Set(id); | 198 info.GetReturnValue().Set(id); |
196 } | 199 } |
197 | 200 |
198 void V8InjectedScriptHost::proxyTargetValueCallback( | 201 void V8InjectedScriptHost::proxyTargetValueCallback( |
199 const v8::FunctionCallbackInfo<v8::Value>& info) { | 202 const v8::FunctionCallbackInfo<v8::Value>& info) { |
200 if (info.Length() != 1 || !info[0]->IsProxy()) { | 203 if (info.Length() != 1 || !info[0]->IsProxy()) { |
201 NOTREACHED(); | 204 UNREACHABLE(); |
202 return; | 205 return; |
203 } | 206 } |
204 v8::Local<v8::Object> target = info[0].As<v8::Proxy>(); | 207 v8::Local<v8::Object> target = info[0].As<v8::Proxy>(); |
205 while (target->IsProxy()) | 208 while (target->IsProxy()) |
206 target = v8::Local<v8::Proxy>::Cast(target)->GetTarget(); | 209 target = v8::Local<v8::Proxy>::Cast(target)->GetTarget(); |
207 info.GetReturnValue().Set(target); | 210 info.GetReturnValue().Set(target); |
208 } | 211 } |
209 | 212 |
210 } // namespace v8_inspector | 213 } // namespace v8_inspector |
OLD | NEW |