- add sources.
[platform/framework/web/crosswalk.git] / src / content / public / browser / profiler_controller.h
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
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_