| 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 |