1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CONTENT_BROWSER_TCMALLOC_INTERNALS_REQUEST_JOB_H_
6 #define CONTENT_BROWSER_TCMALLOC_INTERNALS_REQUEST_JOB_H_
9 #include "base/basictypes.h"
10 #include "base/memory/singleton.h"
11 #include "base/process/process.h"
12 #include "build/build_config.h" // USE_TCMALLOC
13 #include "net/url_request/url_request_simple_job.h"
17 class AboutTcmallocOutputs
{
19 // Returns the singleton instance.
20 static AboutTcmallocOutputs
* GetInstance();
22 // Records the output for a specified header string.
23 void SetOutput(const std::string
& header
, const std::string
& output
);
25 void DumpToHTMLTable(std::string
* data
);
27 // Callback for output returned from a child process. Adds
28 // the output for a canonical process-specific header string that
29 // incorporates the pid.
30 void OnStatsForChildProcess(base::ProcessId pid
,
32 const std::string
& output
);
35 AboutTcmallocOutputs();
36 ~AboutTcmallocOutputs();
38 // A map of header strings (e.g. "Browser", "Renderer PID 123")
39 // to the tcmalloc output collected for each process.
40 typedef std::map
<std::string
, std::string
> AboutTcmallocOutputsType
;
41 AboutTcmallocOutputsType outputs_
;
43 friend struct DefaultSingletonTraits
<AboutTcmallocOutputs
>;
45 DISALLOW_COPY_AND_ASSIGN(AboutTcmallocOutputs
);
48 class TcmallocInternalsRequestJob
: public net::URLRequestSimpleJob
{
50 TcmallocInternalsRequestJob(net::URLRequest
* request
,
51 net::NetworkDelegate
* network_delegate
);
53 int GetData(std::string
* mime_type
,
56 const net::CompletionCallback
& callback
) const override
;
59 ~TcmallocInternalsRequestJob() override
{}
62 DISALLOW_IMPLICIT_CONSTRUCTORS(TcmallocInternalsRequestJob
);
65 } // namespace content
67 #endif // CONTENT_BROWSER_TCMALLOC_INTERNALS_REQUEST_JOB_H_