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