OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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/v8-console.h" | 5 #include "src/inspector/v8-console.h" |
6 | 6 |
7 #include "src/base/macros.h" | 7 #include "src/base/macros.h" |
8 #include "src/inspector/injected-script.h" | 8 #include "src/inspector/injected-script.h" |
9 #include "src/inspector/inspected-context.h" | 9 #include "src/inspector/inspected-context.h" |
10 #include "src/inspector/string-util.h" | 10 #include "src/inspector/string-util.h" |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 if (mapValue->IsUndefined()) { | 153 if (mapValue->IsUndefined()) { |
154 v8::Local<v8::Map> map = v8::Map::New(m_isolate); | 154 v8::Local<v8::Map> map = v8::Map::New(m_isolate); |
155 if (!console->SetPrivate(m_context, privateKey, map).FromMaybe(false)) | 155 if (!console->SetPrivate(m_context, privateKey, map).FromMaybe(false)) |
156 return v8::MaybeLocal<v8::Map>(); | 156 return v8::MaybeLocal<v8::Map>(); |
157 return map; | 157 return map; |
158 } | 158 } |
159 return mapValue->IsMap() ? mapValue.As<v8::Map>() | 159 return mapValue->IsMap() ? mapValue.As<v8::Map>() |
160 : v8::MaybeLocal<v8::Map>(); | 160 : v8::MaybeLocal<v8::Map>(); |
161 } | 161 } |
162 | 162 |
163 int64_t getIntFromMap(v8::Local<v8::Map> map, const String16& key, | 163 int32_t getIntFromMap(v8::Local<v8::Map> map, const String16& key, |
164 int64_t defaultValue) { | 164 int32_t defaultValue) { |
165 v8::Local<v8::String> v8Key = toV8String(m_isolate, key); | 165 v8::Local<v8::String> v8Key = toV8String(m_isolate, key); |
166 if (!map->Has(m_context, v8Key).FromMaybe(false)) return defaultValue; | 166 if (!map->Has(m_context, v8Key).FromMaybe(false)) return defaultValue; |
167 v8::Local<v8::Value> intValue; | 167 v8::Local<v8::Value> intValue; |
168 if (!map->Get(m_context, v8Key).ToLocal(&intValue)) return defaultValue; | 168 if (!map->Get(m_context, v8Key).ToLocal(&intValue)) return defaultValue; |
169 return intValue.As<v8::Integer>()->Value(); | 169 return static_cast<int32_t>(intValue.As<v8::Integer>()->Value()); |
170 } | 170 } |
171 | 171 |
172 void setIntOnMap(v8::Local<v8::Map> map, const String16& key, int64_t value) { | 172 void setIntOnMap(v8::Local<v8::Map> map, const String16& key, int32_t value) { |
173 v8::Local<v8::String> v8Key = toV8String(m_isolate, key); | 173 v8::Local<v8::String> v8Key = toV8String(m_isolate, key); |
174 if (!map->Set(m_context, v8Key, v8::Integer::New(m_isolate, value)) | 174 if (!map->Set(m_context, v8Key, v8::Integer::New(m_isolate, value)) |
175 .ToLocal(&map)) | 175 .ToLocal(&map)) |
176 return; | 176 return; |
177 } | 177 } |
178 | 178 |
179 double getDoubleFromMap(v8::Local<v8::Map> map, const String16& key, | 179 double getDoubleFromMap(v8::Local<v8::Map> map, const String16& key, |
180 double defaultValue) { | 180 double defaultValue) { |
181 v8::Local<v8::String> v8Key = toV8String(m_isolate, key); | 181 v8::Local<v8::String> v8Key = toV8String(m_isolate, key); |
182 if (!map->Has(m_context, v8Key).FromMaybe(false)) return defaultValue; | 182 if (!map->Has(m_context, v8Key).FromMaybe(false)) return defaultValue; |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 V8StackTraceImpl::capture(nullptr, 0, 1); | 346 V8StackTraceImpl::capture(nullptr, 0, 1); |
347 if (stackTrace) | 347 if (stackTrace) |
348 identifier = toString16(stackTrace->topSourceURL()) + ":" + | 348 identifier = toString16(stackTrace->topSourceURL()) + ":" + |
349 String16::fromInteger(stackTrace->topLineNumber()); | 349 String16::fromInteger(stackTrace->topLineNumber()); |
350 } else { | 350 } else { |
351 identifier = title + "@"; | 351 identifier = title + "@"; |
352 } | 352 } |
353 | 353 |
354 v8::Local<v8::Map> countMap; | 354 v8::Local<v8::Map> countMap; |
355 if (!helper.privateMap("V8Console#countMap").ToLocal(&countMap)) return; | 355 if (!helper.privateMap("V8Console#countMap").ToLocal(&countMap)) return; |
356 int64_t count = helper.getIntFromMap(countMap, identifier, 0) + 1; | 356 int32_t count = helper.getIntFromMap(countMap, identifier, 0) + 1; |
357 helper.setIntOnMap(countMap, identifier, count); | 357 helper.setIntOnMap(countMap, identifier, count); |
358 helper.reportCallWithArgument(ConsoleAPIType::kCount, | 358 helper.reportCallWithArgument(ConsoleAPIType::kCount, |
359 title + ": " + String16::fromInteger(count)); | 359 title + ": " + String16::fromInteger(count)); |
360 } | 360 } |
361 | 361 |
362 void V8Console::assertCallback( | 362 void V8Console::assertCallback( |
363 const v8::FunctionCallbackInfo<v8::Value>& info) { | 363 const v8::FunctionCallbackInfo<v8::Value>& info) { |
364 ConsoleHelper helper(info); | 364 ConsoleHelper helper(info); |
365 if (helper.firstArgToBoolean(false)) return; | 365 if (helper.firstArgToBoolean(false)) return; |
366 | 366 |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 v8::Isolate* isolate = info.GetIsolate(); | 504 v8::Isolate* isolate = info.GetIsolate(); |
505 info.GetReturnValue().Set(v8::Array::New(isolate)); | 505 info.GetReturnValue().Set(v8::Array::New(isolate)); |
506 | 506 |
507 ConsoleHelper helper(info); | 507 ConsoleHelper helper(info); |
508 v8::Local<v8::Object> obj; | 508 v8::Local<v8::Object> obj; |
509 if (!helper.firstArgAsObject().ToLocal(&obj)) return; | 509 if (!helper.firstArgAsObject().ToLocal(&obj)) return; |
510 v8::Local<v8::Array> names; | 510 v8::Local<v8::Array> names; |
511 v8::Local<v8::Context> context = isolate->GetCurrentContext(); | 511 v8::Local<v8::Context> context = isolate->GetCurrentContext(); |
512 if (!obj->GetOwnPropertyNames(context).ToLocal(&names)) return; | 512 if (!obj->GetOwnPropertyNames(context).ToLocal(&names)) return; |
513 v8::Local<v8::Array> values = v8::Array::New(isolate, names->Length()); | 513 v8::Local<v8::Array> values = v8::Array::New(isolate, names->Length()); |
514 for (size_t i = 0; i < names->Length(); ++i) { | 514 for (uint32_t i = 0; i < names->Length(); ++i) { |
515 v8::Local<v8::Value> key; | 515 v8::Local<v8::Value> key; |
516 if (!names->Get(context, i).ToLocal(&key)) continue; | 516 if (!names->Get(context, i).ToLocal(&key)) continue; |
517 v8::Local<v8::Value> value; | 517 v8::Local<v8::Value> value; |
518 if (!obj->Get(context, key).ToLocal(&value)) continue; | 518 if (!obj->Get(context, key).ToLocal(&value)) continue; |
519 createDataProperty(context, values, i, value); | 519 createDataProperty(context, values, i, value); |
520 } | 520 } |
521 info.GetReturnValue().Set(values); | 521 info.GetReturnValue().Set(values); |
522 } | 522 } |
523 | 523 |
524 static void setFunctionBreakpoint(ConsoleHelper& helper, | 524 static void setFunctionBreakpoint(ConsoleHelper& helper, |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
869 v8::Local<v8::Object> global) | 869 v8::Local<v8::Object> global) |
870 : m_context(context), | 870 : m_context(context), |
871 m_commandLineAPI(commandLineAPI), | 871 m_commandLineAPI(commandLineAPI), |
872 m_global(global), | 872 m_global(global), |
873 m_installedMethods(v8::Set::New(context->GetIsolate())), | 873 m_installedMethods(v8::Set::New(context->GetIsolate())), |
874 m_cleanup(false) { | 874 m_cleanup(false) { |
875 v8::Local<v8::Array> names; | 875 v8::Local<v8::Array> names; |
876 if (!m_commandLineAPI->GetOwnPropertyNames(context).ToLocal(&names)) return; | 876 if (!m_commandLineAPI->GetOwnPropertyNames(context).ToLocal(&names)) return; |
877 v8::Local<v8::External> externalThis = | 877 v8::Local<v8::External> externalThis = |
878 v8::External::New(context->GetIsolate(), this); | 878 v8::External::New(context->GetIsolate(), this); |
879 for (size_t i = 0; i < names->Length(); ++i) { | 879 for (uint32_t i = 0; i < names->Length(); ++i) { |
880 v8::Local<v8::Value> name; | 880 v8::Local<v8::Value> name; |
881 if (!names->Get(context, i).ToLocal(&name) || !name->IsName()) continue; | 881 if (!names->Get(context, i).ToLocal(&name) || !name->IsName()) continue; |
882 if (m_global->Has(context, name).FromMaybe(true)) continue; | 882 if (m_global->Has(context, name).FromMaybe(true)) continue; |
883 if (!m_installedMethods->Add(context, name).ToLocal(&m_installedMethods)) | 883 if (!m_installedMethods->Add(context, name).ToLocal(&m_installedMethods)) |
884 continue; | 884 continue; |
885 if (!m_global | 885 if (!m_global |
886 ->SetAccessor(context, v8::Local<v8::Name>::Cast(name), | 886 ->SetAccessor(context, v8::Local<v8::Name>::Cast(name), |
887 CommandLineAPIScope::accessorGetterCallback, | 887 CommandLineAPIScope::accessorGetterCallback, |
888 CommandLineAPIScope::accessorSetterCallback, | 888 CommandLineAPIScope::accessorSetterCallback, |
889 externalThis, v8::DEFAULT, v8::DontEnum) | 889 externalThis, v8::DEFAULT, v8::DontEnum) |
890 .FromMaybe(false)) { | 890 .FromMaybe(false)) { |
891 bool removed = m_installedMethods->Delete(context, name).FromMaybe(false); | 891 bool removed = m_installedMethods->Delete(context, name).FromMaybe(false); |
892 DCHECK(removed); | 892 DCHECK(removed); |
893 USE(removed); | 893 USE(removed); |
894 continue; | 894 continue; |
895 } | 895 } |
896 } | 896 } |
897 } | 897 } |
898 | 898 |
899 V8Console::CommandLineAPIScope::~CommandLineAPIScope() { | 899 V8Console::CommandLineAPIScope::~CommandLineAPIScope() { |
900 m_cleanup = true; | 900 m_cleanup = true; |
901 v8::Local<v8::Array> names = m_installedMethods->AsArray(); | 901 v8::Local<v8::Array> names = m_installedMethods->AsArray(); |
902 for (size_t i = 0; i < names->Length(); ++i) { | 902 for (uint32_t i = 0; i < names->Length(); ++i) { |
903 v8::Local<v8::Value> name; | 903 v8::Local<v8::Value> name; |
904 if (!names->Get(m_context, i).ToLocal(&name) || !name->IsName()) continue; | 904 if (!names->Get(m_context, i).ToLocal(&name) || !name->IsName()) continue; |
905 if (name->IsString()) { | 905 if (name->IsString()) { |
906 v8::Local<v8::Value> descriptor; | 906 v8::Local<v8::Value> descriptor; |
907 bool success = m_global | 907 bool success = m_global |
908 ->GetOwnPropertyDescriptor( | 908 ->GetOwnPropertyDescriptor( |
909 m_context, v8::Local<v8::String>::Cast(name)) | 909 m_context, v8::Local<v8::String>::Cast(name)) |
910 .ToLocal(&descriptor); | 910 .ToLocal(&descriptor); |
911 DCHECK(success); | 911 DCHECK(success); |
912 USE(success); | 912 USE(success); |
913 } | 913 } |
914 } | 914 } |
915 } | 915 } |
916 | 916 |
917 } // namespace v8_inspector | 917 } // namespace v8_inspector |
OLD | NEW |