Chromium Code Reviews| Index: src/inspector/v8-runtime-agent-impl.cc |
| diff --git a/src/inspector/v8-runtime-agent-impl.cc b/src/inspector/v8-runtime-agent-impl.cc |
| index b40f08ed065f366302cb196d4566e11f4acfc904..99dbbe0c8b67981824913e1b3f43e351aa3eed13 100644 |
| --- a/src/inspector/v8-runtime-agent-impl.cc |
| +++ b/src/inspector/v8-runtime-agent-impl.cc |
| @@ -30,6 +30,7 @@ |
| #include "src/inspector/v8-runtime-agent-impl.h" |
| +#include "src/debug/debug-interface.h" |
| #include "src/inspector/injected-script.h" |
| #include "src/inspector/inspected-context.h" |
| #include "src/inspector/protocol/Protocol.h" |
| @@ -645,6 +646,62 @@ void V8RuntimeAgentImpl::runScript( |
| std::move(callback)); |
| } |
| +Response V8RuntimeAgentImpl::startPreciseCoverage() { |
| + v8::debug::Coverage::TogglePrecise(m_inspector->isolate(), true); |
|
kozy
2017/02/16 16:47:19
We can be prepared for more then one runtime agent
Yang
2017/02/20 11:24:42
Done.
|
| + return Response::OK(); |
| +} |
| + |
| +Response V8RuntimeAgentImpl::stopPreciseCoverage() { |
| + v8::debug::Coverage::TogglePrecise(m_inspector->isolate(), false); |
|
kozy
2017/02/16 16:47:19
- please toggle precise off in V8RuntimeAgentImpl:
Yang
2017/02/20 11:24:42
Done.
|
| + return Response::OK(); |
| +} |
| + |
| +namespace { |
| +std::unique_ptr<protocol::Runtime::CoverageRange> CreateCoverageRange( |
|
kozy
2017/02/16 16:47:19
We still use not V8 code style here, let's don't m
Yang
2017/02/20 11:24:42
Acknowledged.
|
| + v8::debug::Coverage::Range range) { |
| + std::unique_ptr<protocol::Array<protocol::Runtime::CoverageRange>> nested = |
| + protocol::Array<protocol::Runtime::CoverageRange>::create(); |
| + for (size_t i = 0; i < range.NestedCount(); i++) { |
| + nested->addItem(CreateCoverageRange(range.GetNested(i))); |
| + } |
| + return protocol::Runtime::CoverageRange::create() |
| + .setFunctionName( |
| + toProtocolString(range.Name().FromMaybe(v8::Local<v8::String>()))) |
| + .setStartLineNumber(range.Start().GetLineNumber()) |
| + .setStartColumnNumber(range.Start().GetColumnNumber()) |
| + .setEndLineNumber(range.End().GetLineNumber()) |
| + .setEndColumnNumber(range.End().GetColumnNumber()) |
| + .setNested(std::move(nested)) |
| + .setCount(range.Count()) |
| + .build(); |
| +} |
| +} // anonymous namespace |
| + |
| +Response V8RuntimeAgentImpl::collectCoverage( |
| + std::unique_ptr<protocol::Array<protocol::Runtime::ScriptCoverage>>* |
| + out_result) { |
| + std::unique_ptr<protocol::Array<protocol::Runtime::ScriptCoverage>> result = |
| + protocol::Array<protocol::Runtime::ScriptCoverage>::create(); |
| + v8::HandleScope handle_scope(m_inspector->isolate()); |
| + v8::debug::Coverage coverage = |
| + v8::debug::Coverage::Collect(m_inspector->isolate()); |
| + for (size_t i = 0; i < coverage.ScriptCount(); i++) { |
| + v8::Local<v8::debug::Script> script = coverage.GetScript(i); |
| + String16 url; |
| + v8::Local<v8::String> name; |
| + if (script->Name().ToLocal(&name) || script->SourceURL().ToLocal(&name)) { |
| + url = toProtocolString(name); |
| + } |
| + result->addItem(protocol::Runtime::ScriptCoverage::create() |
| + .setScriptId(String16::fromInteger(script->Id())) |
| + .setUrl(url) |
| + .setToplevel(CreateCoverageRange(coverage.GetRange(i))) |
| + .build()); |
| + } |
| + *out_result = std::move(result); |
| + return Response::OK(); |
| +} |
| + |
| void V8RuntimeAgentImpl::restore() { |
| if (!m_state->booleanProperty(V8RuntimeAgentImplState::runtimeEnabled, false)) |
| return; |