diff options
-rw-r--r-- | base/profiler/tracked_time_unittest.cc | 7 | ||||
-rw-r--r-- | base/tracked_objects.cc | 31 | ||||
-rw-r--r-- | base/tracked_objects.h | 10 | ||||
-rw-r--r-- | base/tracked_objects_unittest.cc | 49 | ||||
-rw-r--r-- | chrome/browser/chrome_browser_main.cc | 10 | ||||
-rw-r--r-- | content/browser/profiler_controller_impl.cc | 14 | ||||
-rw-r--r-- | content/browser/profiler_controller_impl.h | 9 | ||||
-rw-r--r-- | content/browser/profiler_message_filter.cc | 7 | ||||
-rw-r--r-- | content/browser/renderer_host/render_process_host_impl.cc | 5 | ||||
-rw-r--r-- | content/common/child_process_messages.h | 7 | ||||
-rw-r--r-- | content/common/child_thread.cc | 7 | ||||
-rw-r--r-- | content/common/child_thread.h | 5 | ||||
-rw-r--r-- | content/public/browser/profiler_controller.h | 7 |
13 files changed, 104 insertions, 64 deletions
diff --git a/base/profiler/tracked_time_unittest.cc b/base/profiler/tracked_time_unittest.cc index 6491a2f..b85411d 100644 --- a/base/profiler/tracked_time_unittest.cc +++ b/base/profiler/tracked_time_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -76,7 +76,7 @@ TEST(TrackedTimeTest, TrackedTimerVsTimeTicks) { TEST(TrackedTimeTest, TrackedTimerDisabled) { // Check to be sure disabling the collection of data induces a null time // (which we know will return much faster). - if (!ThreadData::InitializeAndSetTrackingStatus(false)) + if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) return; // Since we disabled tracking, we should get a null response. TrackedTime track_now = ThreadData::Now(); @@ -88,7 +88,8 @@ TEST(TrackedTimeTest, TrackedTimerDisabled) { } TEST(TrackedTimeTest, TrackedTimerEnabled) { - if (!ThreadData::InitializeAndSetTrackingStatus(true)) + if (!ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE)) return; // Make sure that when we enable tracking, we get a real timer result. diff --git a/base/tracked_objects.cc b/base/tracked_objects.cc index e7d7bd1..87af8dc 100644 --- a/base/tracked_objects.cc +++ b/base/tracked_objects.cc @@ -393,7 +393,7 @@ Births* ThreadData::TallyABirthIfActive(const Location& location) { if (!kTrackAllTaskObjects) return NULL; // Not compiled in. - if (!tracking_status()) + if (!TrackingStatus()) return NULL; ThreadData* current_thread_data = Get(); if (!current_thread_data) @@ -622,28 +622,31 @@ bool ThreadData::Initialize() { } // static -bool ThreadData::InitializeAndSetTrackingStatus(bool status) { +bool ThreadData::InitializeAndSetTrackingStatus(Status status) { + DCHECK_GE(status, DEACTIVATED); + DCHECK_LE(status, PROFILING_CHILDREN_ACTIVE); + if (!Initialize()) // No-op if already initialized. return false; // Not compiled in. - if (!status) { - status_ = DEACTIVATED; - } else { - if (kTrackParentChildLinks) - status_ = PROFILING_CHILDREN_ACTIVE; - else - status_ = PROFILING_ACTIVE; - } + if (!kTrackParentChildLinks && status > DEACTIVATED) + status = PROFILING_ACTIVE; + status_ = status; return true; } // static -bool ThreadData::tracking_status() { +ThreadData::Status ThreadData::status() { + return status_; +} + +// static +bool ThreadData::TrackingStatus() { return status_ > DEACTIVATED; } // static -bool ThreadData::tracking_parent_child_status() { +bool ThreadData::TrackingParentChildStatus() { return status_ >= PROFILING_CHILDREN_ACTIVE; } @@ -664,7 +667,7 @@ TrackedTime ThreadData::NowForEndOfRun() { // static TrackedTime ThreadData::Now() { - if (kTrackAllTaskObjects && tracking_status()) + if (kTrackAllTaskObjects && TrackingStatus()) return TrackedTime::Now(); return TrackedTime(); // Super fast when disabled, or not compiled. } @@ -686,7 +689,7 @@ void ThreadData::ShutdownSingleThreadedCleanup(bool leak) { // This is only called from test code, where we need to cleanup so that // additional tests can be run. // We must be single threaded... but be careful anyway. - if (!InitializeAndSetTrackingStatus(false)) + if (!InitializeAndSetTrackingStatus(DEACTIVATED)) return; ThreadData* thread_data_list; { diff --git a/base/tracked_objects.h b/base/tracked_objects.h index 9b7f111..c0674cc 100644 --- a/base/tracked_objects.h +++ b/base/tracked_objects.h @@ -442,15 +442,17 @@ class BASE_EXPORT ThreadData { // PROFILING_ACTIVE (i.e., it can't be set to a higher level than what is // compiled into the binary, and parent-child tracking at the // PROFILING_CHILDREN_ACTIVE level might not be compiled in). - static bool InitializeAndSetTrackingStatus(bool status); + static bool InitializeAndSetTrackingStatus(Status status); + + static Status status(); // Indicate if any sort of profiling is being done (i.e., we are more than // DEACTIVATED). - static bool tracking_status(); + static bool TrackingStatus(); // For testing only, indicate if the status of parent-child tracking is turned - // on. This is currently a compiled option, atop tracking_status(). - static bool tracking_parent_child_status(); + // on. This is currently a compiled option, atop TrackingStatus(). + static bool TrackingParentChildStatus(); // Special versions of Now() for getting times at start and end of a tracked // run. They are super fast when tracking is disabled, and have some internal diff --git a/base/tracked_objects_unittest.cc b/base/tracked_objects_unittest.cc index 68911bb..d57ddee 100644 --- a/base/tracked_objects_unittest.cc +++ b/base/tracked_objects_unittest.cc @@ -35,7 +35,8 @@ class TrackedObjectsTest : public testing::Test { TEST_F(TrackedObjectsTest, MinimalStartupShutdown) { // Minimal test doesn't even create any tasks. - if (!ThreadData::InitializeAndSetTrackingStatus(true)) + if (!ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE)) return; EXPECT_FALSE(ThreadData::first()); // No activity even on this thread. @@ -55,7 +56,8 @@ TEST_F(TrackedObjectsTest, MinimalStartupShutdown) { ShutdownSingleThreadedCleanup(false); // Do it again, just to be sure we reset state completely. - ThreadData::InitializeAndSetTrackingStatus(true); + ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE); EXPECT_FALSE(ThreadData::first()); // No activity even on this thread. data = ThreadData::Get(); EXPECT_TRUE(ThreadData::first()); // Now class was constructed. @@ -71,7 +73,8 @@ TEST_F(TrackedObjectsTest, MinimalStartupShutdown) { } TEST_F(TrackedObjectsTest, TinyStartupShutdown) { - if (!ThreadData::InitializeAndSetTrackingStatus(true)) + if (!ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE)) return; // Instigate tracking on a single tracked object, on our thread. @@ -113,7 +116,7 @@ TEST_F(TrackedObjectsTest, TinyStartupShutdown) { EXPECT_EQ(2, birth_map.begin()->second->birth_count()); // 2 births. EXPECT_EQ(1u, death_map.size()); // 1 location. EXPECT_EQ(1, death_map.begin()->second.count()); // 1 death. - if (ThreadData::tracking_parent_child_status()) { + if (ThreadData::TrackingParentChildStatus()) { EXPECT_EQ(1u, parent_child_set.size()); // 1 child. EXPECT_EQ(parent_child_set.begin()->first, parent_child_set.begin()->second); @@ -126,9 +129,10 @@ TEST_F(TrackedObjectsTest, TinyStartupShutdown) { } TEST_F(TrackedObjectsTest, ParentChildTest) { - if (!ThreadData::InitializeAndSetTrackingStatus(true)) + if (!ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE)) return; - if (!ThreadData::tracking_parent_child_status()) + if (!ThreadData::TrackingParentChildStatus()) return; // Feature not compiled in. // Instigate tracking on a single tracked object, on our thread. @@ -211,7 +215,8 @@ TEST_F(TrackedObjectsTest, ParentChildTest) { } TEST_F(TrackedObjectsTest, DeathDataTest) { - if (!ThreadData::InitializeAndSetTrackingStatus(true)) + if (!ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE)) return; scoped_ptr<DeathData> data(new DeathData()); @@ -270,7 +275,7 @@ TEST_F(TrackedObjectsTest, DeathDataTest) { TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueWorkerThread) { // Transition to Deactivated state before doing anything. - if (!ThreadData::InitializeAndSetTrackingStatus(false)) + if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) return; // We don't initialize system with a thread name, so we're viewed as a worker // thread. @@ -296,7 +301,7 @@ TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueWorkerThread) { TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueMainThread) { // Start in the deactivated state. - if (!ThreadData::InitializeAndSetTrackingStatus(false)) + if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) return; // Use a well named thread. @@ -323,7 +328,8 @@ TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueMainThread) { } TEST_F(TrackedObjectsTest, BirthOnlyToValueWorkerThread) { - if (!ThreadData::InitializeAndSetTrackingStatus(true)) + if (!ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE)) return; // We don't initialize system with a thread name, so we're viewed as a worker // thread. @@ -365,7 +371,8 @@ TEST_F(TrackedObjectsTest, BirthOnlyToValueWorkerThread) { } TEST_F(TrackedObjectsTest, BirthOnlyToValueMainThread) { - if (!ThreadData::InitializeAndSetTrackingStatus(true)) + if (!ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE)) return; // Use a well named thread. @@ -409,7 +416,8 @@ TEST_F(TrackedObjectsTest, BirthOnlyToValueMainThread) { } TEST_F(TrackedObjectsTest, LifeCycleToValueMainThread) { - if (!ThreadData::InitializeAndSetTrackingStatus(true)) + if (!ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE)) return; // Use a well named thread. @@ -470,7 +478,8 @@ TEST_F(TrackedObjectsTest, LifeCycleToValueMainThread) { // our tallied births are matched by tallied deaths (except for when the // task is still running, or is queued). TEST_F(TrackedObjectsTest, LifeCycleMidDeactivatedToValueMainThread) { - if (!ThreadData::InitializeAndSetTrackingStatus(true)) + if (!ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE)) return; // Use a well named thread. @@ -491,7 +500,8 @@ TEST_F(TrackedObjectsTest, LifeCycleMidDeactivatedToValueMainThread) { pending_task.time_posted = kTimePosted; // Overwrite implied Now(). // Turn off tracking now that we have births. - EXPECT_TRUE(ThreadData::InitializeAndSetTrackingStatus(false)); + EXPECT_TRUE(ThreadData::InitializeAndSetTrackingStatus( + ThreadData::DEACTIVATED)); const TrackedTime kStartOfRun = TrackedTime() + Duration::FromMilliseconds(5); @@ -532,7 +542,7 @@ TEST_F(TrackedObjectsTest, LifeCycleMidDeactivatedToValueMainThread) { // We will deactivate tracking before starting a life cycle, and neither // the birth nor the death will be recorded. TEST_F(TrackedObjectsTest, LifeCyclePreDeactivatedToValueMainThread) { - if (!ThreadData::InitializeAndSetTrackingStatus(false)) + if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) return; // Use a well named thread. @@ -571,7 +581,8 @@ TEST_F(TrackedObjectsTest, LifeCyclePreDeactivatedToValueMainThread) { } TEST_F(TrackedObjectsTest, LifeCycleToValueWorkerThread) { - if (!ThreadData::InitializeAndSetTrackingStatus(true)) + if (!ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE)) return; // Don't initialize thread, so that we appear as a worker thread. @@ -662,7 +673,8 @@ TEST_F(TrackedObjectsTest, LifeCycleToValueWorkerThread) { } TEST_F(TrackedObjectsTest, TwoLives) { - if (!ThreadData::InitializeAndSetTrackingStatus(true)) + if (!ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE)) return; // Use a well named thread. @@ -727,7 +739,8 @@ TEST_F(TrackedObjectsTest, TwoLives) { } TEST_F(TrackedObjectsTest, DifferentLives) { - if (!ThreadData::InitializeAndSetTrackingStatus(true)) + if (!ThreadData::InitializeAndSetTrackingStatus( + ThreadData::PROFILING_CHILDREN_ACTIVE)) return; // Use a well named thread. diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc index fa261e0..1a86986 100644 --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc @@ -1160,8 +1160,14 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { // User wants to override default tracking status. std::string flag = parsed_command_line().GetSwitchValueASCII(switches::kEnableProfiling); - bool enabled = flag.compare("0") != 0; - tracked_objects::ThreadData::InitializeAndSetTrackingStatus(enabled); + // Default to basic profiling (no parent child support). + tracked_objects::ThreadData::Status status = + tracked_objects::ThreadData::PROFILING_ACTIVE; + if (flag.compare("0") != 0) + status = tracked_objects::ThreadData::DEACTIVATED; + else if (flag.compare("child") != 0) + status = tracked_objects::ThreadData::PROFILING_CHILDREN_ACTIVE; + tracked_objects::ThreadData::InitializeAndSetTrackingStatus(status); } // This forces the TabCloseableStateWatcher to be created and, on chromeos, diff --git a/content/browser/profiler_controller_impl.cc b/content/browser/profiler_controller_impl.cc index 1954da8..b3e40e8 100644 --- a/content/browser/profiler_controller_impl.cc +++ b/content/browser/profiler_controller_impl.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -121,14 +121,16 @@ void ProfilerControllerImpl::GetProfilerData(int sequence_number) { sequence_number)); } -void ProfilerControllerImpl::SetProfilerStatusInChildProcesses(bool enable) { +void ProfilerControllerImpl::SetProfilerStatusInChildProcesses( + tracked_objects::ThreadData::Status status) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); for (BrowserChildProcessHostIterator iter; !iter.Done(); ++iter) - iter.Send(new ChildProcessMsg_SetProfilerStatus(enable)); + iter.Send(new ChildProcessMsg_SetProfilerStatus(status)); } -void ProfilerControllerImpl::SetProfilerStatus(bool enable) { +void ProfilerControllerImpl::SetProfilerStatus( + tracked_objects::ThreadData::Status status) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); BrowserThread::PostTask( @@ -136,12 +138,12 @@ void ProfilerControllerImpl::SetProfilerStatus(bool enable) { FROM_HERE, base::Bind(&ProfilerControllerImpl::SetProfilerStatusInChildProcesses, base::Unretained(this), - enable)); + status)); for (content::RenderProcessHost::iterator it( content::RenderProcessHost::AllHostsIterator()); !it.IsAtEnd(); it.Advance()) { - it.GetCurrentValue()->Send(new ChildProcessMsg_SetProfilerStatus(enable)); + it.GetCurrentValue()->Send(new ChildProcessMsg_SetProfilerStatus(status)); } } } // namespace content diff --git a/content/browser/profiler_controller_impl.h b/content/browser/profiler_controller_impl.h index eca522a..ff361ea 100644 --- a/content/browser/profiler_controller_impl.h +++ b/content/browser/profiler_controller_impl.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -6,6 +6,7 @@ #define CONTENT_BROWSER_PROFILER_CONTROLLER_IMPL_H_ #include "base/memory/singleton.h" +#include "base/tracked_objects.h" #include "content/common/content_export.h" #include "content/public/browser/profiler_controller.h" @@ -34,7 +35,8 @@ class CONTENT_EXPORT ProfilerControllerImpl : public ProfilerController { virtual void Register(ProfilerSubscriber* subscriber) OVERRIDE; virtual void Unregister(ProfilerSubscriber* subscriber) OVERRIDE; virtual void GetProfilerData(int sequence_number) OVERRIDE; - virtual void SetProfilerStatus(bool enable) OVERRIDE; + virtual void SetProfilerStatus( + tracked_objects::ThreadData::Status status) OVERRIDE; private: friend struct DefaultSingletonTraits<ProfilerControllerImpl>; @@ -43,7 +45,8 @@ class CONTENT_EXPORT ProfilerControllerImpl : public ProfilerController { void GetProfilerDataFromChildProcesses(int sequence_number); // Contact child processes and set profiler status to |enable|. - void SetProfilerStatusInChildProcesses(bool enable); + void SetProfilerStatusInChildProcesses( + tracked_objects::ThreadData::Status status); ProfilerSubscriber* subscriber_; diff --git a/content/browser/profiler_message_filter.cc b/content/browser/profiler_message_filter.cc index 7df676e..e0f5979 100644 --- a/content/browser/profiler_message_filter.cc +++ b/content/browser/profiler_message_filter.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -21,8 +21,9 @@ ProfilerMessageFilter::~ProfilerMessageFilter() { void ProfilerMessageFilter::OnChannelConnected(int32 peer_pid) { BrowserMessageFilter::OnChannelConnected(peer_pid); - bool enable = tracked_objects::ThreadData::tracking_status(); - Send(new ChildProcessMsg_SetProfilerStatus(enable)); + tracked_objects::ThreadData::Status status = + tracked_objects::ThreadData::status(); + Send(new ChildProcessMsg_SetProfilerStatus(status)); } bool ProfilerMessageFilter::OnMessageReceived(const IPC::Message& message, diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index ce2d699..5e63d7e 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc @@ -908,8 +908,9 @@ void RenderProcessHostImpl::OnChannelConnected(int32 peer_pid) { IPC::Logging::GetInstance()->Enabled())); #endif - bool enable = tracked_objects::ThreadData::tracking_status(); - Send(new ChildProcessMsg_SetProfilerStatus(enable)); + tracked_objects::ThreadData::Status status = + tracked_objects::ThreadData::status(); + Send(new ChildProcessMsg_SetProfilerStatus(status)); } void RenderProcessHostImpl::OnChannelError() { diff --git a/content/common/child_process_messages.h b/content/common/child_process_messages.h index 0e679b8..ab56be0 100644 --- a/content/common/child_process_messages.h +++ b/content/common/child_process_messages.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -6,11 +6,14 @@ // Multiply-included message file, hence no include guard. #include "base/shared_memory.h" +#include "base/tracked_objects.h" #include "base/values.h" #include "content/common/content_export.h" #include "googleurl/src/gurl.h" #include "ipc/ipc_message_macros.h" +IPC_ENUM_TRAITS(tracked_objects::ThreadData::Status) + #undef IPC_MESSAGE_EXPORT #define IPC_MESSAGE_EXPORT CONTENT_EXPORT @@ -41,7 +44,7 @@ IPC_MESSAGE_CONTROL0(ChildProcessMsg_GetTraceBufferPercentFull) // Tell the child process to enable or disable the profiler status. IPC_MESSAGE_CONTROL1(ChildProcessMsg_SetProfilerStatus, - bool /* profiler status */) + tracked_objects::ThreadData::Status /* profiler status */) // Send to all the child processes to send back profiler data (ThreadData in // tracked_objects). diff --git a/content/common/child_thread.cc b/content/common/child_thread.cc index 9152a44..1514256 100644 --- a/content/common/child_thread.cc +++ b/content/common/child_thread.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -218,8 +218,9 @@ void ChildThread::OnSetIPCLoggingEnabled(bool enable) { } #endif // IPC_MESSAGE_LOG_ENABLED -void ChildThread::OnSetProfilerStatus(bool enable) { - tracked_objects::ThreadData::InitializeAndSetTrackingStatus(enable); +void ChildThread::OnSetProfilerStatus( + tracked_objects::ThreadData::Status status) { + tracked_objects::ThreadData::InitializeAndSetTrackingStatus(status); } void ChildThread::OnGetChildProfilerData( diff --git a/content/common/child_thread.h b/content/common/child_thread.h index 220985a..4155a59 100644 --- a/content/common/child_thread.h +++ b/content/common/child_thread.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -9,6 +9,7 @@ #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" #include "base/shared_memory.h" +#include "base/tracked_objects.h" #include "content/common/content_export.h" #include "content/common/message_router.h" #include "webkit/glue/resource_loader_bridge.h" @@ -92,7 +93,7 @@ class CONTENT_EXPORT ChildThread : public IPC::Channel::Listener, virtual void OnSetIPCLoggingEnabled(bool enable); #endif - virtual void OnSetProfilerStatus(bool enable); + virtual void OnSetProfilerStatus(tracked_objects::ThreadData::Status status); virtual void OnGetChildProfilerData(int sequence_number, const std::string& process_type); diff --git a/content/public/browser/profiler_controller.h b/content/public/browser/profiler_controller.h index 0814581..9627f52 100644 --- a/content/public/browser/profiler_controller.h +++ b/content/public/browser/profiler_controller.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -8,8 +8,10 @@ #include <set> #include <string> +#include "base/tracked_objects.h" #include "content/common/content_export.h" + namespace base { class DictionaryValue; } @@ -43,7 +45,8 @@ class CONTENT_EXPORT ProfilerController { virtual void GetProfilerData(int sequence_number) = 0; // Contact all processes and set profiler status to |enable|. - virtual void SetProfilerStatus(bool enable) = 0; + virtual void SetProfilerStatus( + tracked_objects::ThreadData::Status status) = 0; }; |