| 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-message.h" |    5 #include "src/inspector/v8-console-message.h" | 
|    6  |    6  | 
|    7 #include "src/debug/debug-interface.h" |    7 #include "src/debug/debug-interface.h" | 
|    8 #include "src/inspector/inspected-context.h" |    8 #include "src/inspector/inspected-context.h" | 
|    9 #include "src/inspector/protocol/Protocol.h" |    9 #include "src/inspector/protocol/Protocol.h" | 
|   10 #include "src/inspector/string-util.h" |   10 #include "src/inspector/string-util.h" | 
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  346                              m_arguments[0]->Get(isolate), "console", |  346                              m_arguments[0]->Get(isolate), "console", | 
|  347                              generatePreview); |  347                              generatePreview); | 
|  348 } |  348 } | 
|  349  |  349  | 
|  350 V8MessageOrigin V8ConsoleMessage::origin() const { return m_origin; } |  350 V8MessageOrigin V8ConsoleMessage::origin() const { return m_origin; } | 
|  351  |  351  | 
|  352 ConsoleAPIType V8ConsoleMessage::type() const { return m_type; } |  352 ConsoleAPIType V8ConsoleMessage::type() const { return m_type; } | 
|  353  |  353  | 
|  354 // static |  354 // static | 
|  355 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI( |  355 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI( | 
|  356     v8::Local<v8::Context> v8Context, int contextId, int groupId, |  356     double timestamp, ConsoleAPIType type, | 
|  357     V8InspectorImpl* inspector, double timestamp, ConsoleAPIType type, |  | 
|  358     const std::vector<v8::Local<v8::Value>>& arguments, |  357     const std::vector<v8::Local<v8::Value>>& arguments, | 
|  359     std::unique_ptr<V8StackTraceImpl> stackTrace) { |  358     std::unique_ptr<V8StackTraceImpl> stackTrace, | 
|  360   v8::Isolate* isolate = v8Context->GetIsolate(); |  359     InspectedContext* inspectedContext) { | 
 |  360   v8::Isolate* isolate = inspectedContext->isolate(); | 
 |  361   int contextId = inspectedContext->contextId(); | 
 |  362   int contextGroupId = inspectedContext->contextGroupId(); | 
 |  363   V8InspectorImpl* inspector = inspectedContext->inspector(); | 
 |  364   v8::Local<v8::Context> context = inspectedContext->context(); | 
|  361  |  365  | 
|  362   std::unique_ptr<V8ConsoleMessage> message( |  366   std::unique_ptr<V8ConsoleMessage> message( | 
|  363       new V8ConsoleMessage(V8MessageOrigin::kConsole, timestamp, String16())); |  367       new V8ConsoleMessage(V8MessageOrigin::kConsole, timestamp, String16())); | 
|  364   if (stackTrace && !stackTrace->isEmpty()) { |  368   if (stackTrace && !stackTrace->isEmpty()) { | 
|  365     message->m_url = toString16(stackTrace->topSourceURL()); |  369     message->m_url = toString16(stackTrace->topSourceURL()); | 
|  366     message->m_lineNumber = stackTrace->topLineNumber(); |  370     message->m_lineNumber = stackTrace->topLineNumber(); | 
|  367     message->m_columnNumber = stackTrace->topColumnNumber(); |  371     message->m_columnNumber = stackTrace->topColumnNumber(); | 
|  368   } |  372   } | 
|  369   message->m_stackTrace = std::move(stackTrace); |  373   message->m_stackTrace = std::move(stackTrace); | 
|  370   message->m_type = type; |  374   message->m_type = type; | 
|  371   message->m_contextId = contextId; |  375   message->m_contextId = contextId; | 
|  372   for (size_t i = 0; i < arguments.size(); ++i) { |  376   for (size_t i = 0; i < arguments.size(); ++i) { | 
|  373     message->m_arguments.push_back(std::unique_ptr<v8::Global<v8::Value>>( |  377     message->m_arguments.push_back(std::unique_ptr<v8::Global<v8::Value>>( | 
|  374         new v8::Global<v8::Value>(isolate, arguments.at(i)))); |  378         new v8::Global<v8::Value>(isolate, arguments.at(i)))); | 
|  375     message->m_v8Size += |  379     message->m_v8Size += | 
|  376         v8::debug::EstimatedValueSize(isolate, arguments.at(i)); |  380         v8::debug::EstimatedValueSize(isolate, arguments.at(i)); | 
|  377   } |  381   } | 
|  378   if (arguments.size()) |  382   if (arguments.size()) | 
|  379     message->m_message = |  383     message->m_message = V8ValueStringBuilder::toString(arguments[0], context); | 
|  380         V8ValueStringBuilder::toString(arguments[0], v8Context); |  | 
|  381  |  384  | 
|  382   v8::Isolate::MessageErrorLevel clientLevel = v8::Isolate::kMessageInfo; |  385   v8::Isolate::MessageErrorLevel clientLevel = v8::Isolate::kMessageInfo; | 
|  383   if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || |  386   if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || | 
|  384       type == ConsoleAPIType::kTimeEnd) { |  387       type == ConsoleAPIType::kTimeEnd) { | 
|  385     clientLevel = v8::Isolate::kMessageDebug; |  388     clientLevel = v8::Isolate::kMessageDebug; | 
|  386   } else if (type == ConsoleAPIType::kError || |  389   } else if (type == ConsoleAPIType::kError || | 
|  387              type == ConsoleAPIType::kAssert) { |  390              type == ConsoleAPIType::kAssert) { | 
|  388     clientLevel = v8::Isolate::kMessageError; |  391     clientLevel = v8::Isolate::kMessageError; | 
|  389   } else if (type == ConsoleAPIType::kWarning) { |  392   } else if (type == ConsoleAPIType::kWarning) { | 
|  390     clientLevel = v8::Isolate::kMessageWarning; |  393     clientLevel = v8::Isolate::kMessageWarning; | 
|  391   } else if (type == ConsoleAPIType::kInfo || type == ConsoleAPIType::kLog) { |  394   } else if (type == ConsoleAPIType::kInfo || type == ConsoleAPIType::kLog) { | 
|  392     clientLevel = v8::Isolate::kMessageInfo; |  395     clientLevel = v8::Isolate::kMessageInfo; | 
|  393   } |  396   } | 
|  394  |  397  | 
|  395   if (type != ConsoleAPIType::kClear) { |  398   if (type != ConsoleAPIType::kClear) { | 
|  396     inspector->client()->consoleAPIMessage( |  399     inspector->client()->consoleAPIMessage( | 
|  397         groupId, clientLevel, toStringView(message->m_message), |  400         contextGroupId, clientLevel, toStringView(message->m_message), | 
|  398         toStringView(message->m_url), message->m_lineNumber, |  401         toStringView(message->m_url), message->m_lineNumber, | 
|  399         message->m_columnNumber, message->m_stackTrace.get()); |  402         message->m_columnNumber, message->m_stackTrace.get()); | 
|  400   } |  403   } | 
|  401  |  404  | 
|  402   return message; |  405   return message; | 
|  403 } |  406 } | 
|  404  |  407  | 
|  405 // static |  408 // static | 
|  406 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForException( |  409 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForException( | 
|  407     double timestamp, const String16& detailedMessage, const String16& url, |  410     double timestamp, const String16& detailedMessage, const String16& url, | 
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  480   } |  483   } | 
|  481  |  484  | 
|  482   m_messages.push_back(std::move(message)); |  485   m_messages.push_back(std::move(message)); | 
|  483   m_estimatedSize += m_messages.back()->estimatedSize(); |  486   m_estimatedSize += m_messages.back()->estimatedSize(); | 
|  484 } |  487 } | 
|  485  |  488  | 
|  486 void V8ConsoleMessageStorage::clear() { |  489 void V8ConsoleMessageStorage::clear() { | 
|  487   m_messages.clear(); |  490   m_messages.clear(); | 
|  488   m_estimatedSize = 0; |  491   m_estimatedSize = 0; | 
|  489   if (V8InspectorSessionImpl* session = |  492   if (V8InspectorSessionImpl* session = | 
|  490           m_inspector->sessionForContextGroup(m_contextGroupId)) { |  493           m_inspector->sessionForContextGroup(m_contextGroupId)) | 
|  491     session->releaseObjectGroup("console"); |  494     session->releaseObjectGroup("console"); | 
|  492   } |  | 
|  493   m_data.clear(); |  | 
|  494 } |  | 
|  495  |  | 
|  496 bool V8ConsoleMessageStorage::shouldReportDeprecationMessage( |  | 
|  497     int contextId, const String16& method) { |  | 
|  498   std::set<String16>& reportedDeprecationMessages = |  | 
|  499       m_data[contextId].m_reportedDeprecationMessages; |  | 
|  500   auto it = reportedDeprecationMessages.find(method); |  | 
|  501   if (it != reportedDeprecationMessages.end()) return false; |  | 
|  502   reportedDeprecationMessages.insert(it, method); |  | 
|  503   return true; |  | 
|  504 } |  | 
|  505  |  | 
|  506 int V8ConsoleMessageStorage::count(int contextId, const String16& id) { |  | 
|  507   return ++m_data[contextId].m_count[id]; |  | 
|  508 } |  | 
|  509  |  | 
|  510 void V8ConsoleMessageStorage::time(int contextId, const String16& id) { |  | 
|  511   m_data[contextId].m_time[id] = m_inspector->client()->currentTimeMS(); |  | 
|  512 } |  | 
|  513  |  | 
|  514 double V8ConsoleMessageStorage::timeEnd(int contextId, const String16& id) { |  | 
|  515   std::map<String16, double>& time = m_data[contextId].m_time; |  | 
|  516   auto it = time.find(id); |  | 
|  517   if (it == time.end()) return 0.0; |  | 
|  518   double elapsed = m_inspector->client()->currentTimeMS() - it->second; |  | 
|  519   time.erase(it); |  | 
|  520   return elapsed; |  | 
|  521 } |  495 } | 
|  522  |  496  | 
|  523 void V8ConsoleMessageStorage::contextDestroyed(int contextId) { |  497 void V8ConsoleMessageStorage::contextDestroyed(int contextId) { | 
|  524   m_estimatedSize = 0; |  498   m_estimatedSize = 0; | 
|  525   for (size_t i = 0; i < m_messages.size(); ++i) { |  499   for (size_t i = 0; i < m_messages.size(); ++i) { | 
|  526     m_messages[i]->contextDestroyed(contextId); |  500     m_messages[i]->contextDestroyed(contextId); | 
|  527     m_estimatedSize += m_messages[i]->estimatedSize(); |  501     m_estimatedSize += m_messages[i]->estimatedSize(); | 
|  528   } |  502   } | 
|  529   auto it = m_data.find(contextId); |  | 
|  530   if (it != m_data.end()) m_data.erase(contextId); |  | 
|  531 } |  503 } | 
|  532  |  504  | 
|  533 }  // namespace v8_inspector |  505 }  // namespace v8_inspector | 
| OLD | NEW |