• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef CONTENT_PUBLIC_BROWSER_PROFILER_CONTROLLER_H_
6 #define CONTENT_PUBLIC_BROWSER_PROFILER_CONTROLLER_H_
7 
8 #include <set>
9 #include <string>
10 
11 #include "base/tracked_objects.h"
12 #include "content/common/content_export.h"
13 
14 
15 namespace base {
16 class DictionaryValue;
17 }
18 
19 namespace content {
20 
21 class ProfilerSubscriber;
22 
23 // ProfilerController is used on the browser process to collect profiler data.
24 // Only the browser UI thread is allowed to interact with the ProfilerController
25 // object.
26 class CONTENT_EXPORT ProfilerController {
27  public:
28   // Returns the ProfilerController object for the current process, or NULL if
29   // none.
30   static ProfilerController* GetInstance();
31 
~ProfilerController()32   virtual ~ProfilerController() {}
33 
34   // Register the subscriber so that it will be called when for example
35   // OnProfilerDataCollected is returning profiler data from a child process.
36   // This is called on UI thread.
37   virtual void Register(ProfilerSubscriber* subscriber) = 0;
38 
39   // Unregister the subscriber so that it will not be called when for example
40   // OnProfilerDataCollected is returning profiler data from a child process.
41   // Safe to call even if caller is not the current subscriber.
42   virtual void Unregister(const ProfilerSubscriber* subscriber) = 0;
43 
44   // Contact all processes and get their profiler data.
45   virtual void GetProfilerData(int sequence_number) = 0;
46 };
47 
48 }  // namespace content
49 
50 #endif  // CONTENT_PUBLIC_BROWSER_PROFILER_CONTROLLER_H_
51