Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1196)

Unified Diff: content/browser/devtools/protocol/tracing_handler.cc

Issue 2161583004: Tracing: re-use JSONTraceDataSink in DevTools' tracing handler... (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments addressed Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/devtools/devtools_io_context.cc ('k') | content/browser/tracing/tracing_controller_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/devtools/protocol/tracing_handler.cc
diff --git a/content/browser/devtools/protocol/tracing_handler.cc b/content/browser/devtools/protocol/tracing_handler.cc
index 12f9c1899e8191997da2b1bc5fe26e71ce3e8d5e..7ffadb7be95008976ab48725d33303224ff8f907 100644
--- a/content/browser/devtools/protocol/tracing_handler.cc
+++ b/content/browser/devtools/protocol/tracing_handler.cc
@@ -92,39 +92,28 @@ class DevToolsTraceSinkProxy : public TracingController::TraceDataSink {
base::WeakPtr<TracingHandler> tracing_handler_;
};
-class DevToolsStreamTraceSink : public TracingController::TraceDataSink {
+class DevToolsStreamEndpoint : public TraceDataEndpoint {
public:
- explicit DevToolsStreamTraceSink(
+ explicit DevToolsStreamEndpoint(
base::WeakPtr<TracingHandler> handler,
const scoped_refptr<DevToolsIOContext::Stream>& stream)
- : stream_(stream),
- tracing_handler_(handler),
- first_chunk_(true) {}
+ : stream_(stream), tracing_handler_(handler) {}
- void AddTraceChunk(const std::string& chunk) override {
- // FIXME: change interface to pass chunks as refcounted strings.
- scoped_refptr<base::RefCountedString> ref_counted_chunk
- = new base::RefCountedString();
- std::string prefix = first_chunk_ ? "[" : ",";
- ref_counted_chunk->data() = prefix + chunk;
- first_chunk_ = false;
- stream_->Append(ref_counted_chunk);
+ void ReceiveTraceChunk(std::unique_ptr<std::string> chunk) override {
+ stream_->Append(std::move(chunk));
}
- void Close() override {
- if (TracingHandler* h = tracing_handler_.get()) {
- std::string suffix = "]";
- stream_->Append(base::RefCountedString::TakeString(&suffix));
+ void ReceiveTraceFinalContents(
+ std::unique_ptr<const base::DictionaryValue> metadata) override {
+ if (TracingHandler* h = tracing_handler_.get())
h->OnTraceToStreamComplete(stream_->handle());
- }
}
private:
- ~DevToolsStreamTraceSink() override {}
+ ~DevToolsStreamEndpoint() override {}
scoped_refptr<DevToolsIOContext::Stream> stream_;
base::WeakPtr<TracingHandler> tracing_handler_;
- bool first_chunk_;
};
} // namespace
@@ -221,14 +210,14 @@ Response TracingHandler::End(DevToolsCommandId command_id) {
if (!did_initiate_recording_ && !IsStartupTracingActive())
return Response::InternalError("Tracing is not started");
- scoped_refptr<TracingController::TraceDataSink> proxy;
+ scoped_refptr<TracingController::TraceDataSink> sink;
if (return_as_stream_) {
- proxy = new DevToolsStreamTraceSink(
- weak_factory_.GetWeakPtr(), io_context_->CreateTempFileBackedStream());
+ sink = TracingControllerImpl::CreateJSONSink(new DevToolsStreamEndpoint(
+ weak_factory_.GetWeakPtr(), io_context_->CreateTempFileBackedStream()));
} else {
- proxy = new DevToolsTraceSinkProxy(weak_factory_.GetWeakPtr());
+ sink = new DevToolsTraceSinkProxy(weak_factory_.GetWeakPtr());
}
- StopTracing(proxy);
+ StopTracing(sink);
// If inspected target is a render process Tracing.end will be handled by
// tracing agent in the renderer.
return target_ == Renderer ? Response::FallThrough() : Response::OK();
« no previous file with comments | « content/browser/devtools/devtools_io_context.cc ('k') | content/browser/tracing/tracing_controller_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698