Chromium Code Reviews| Index: chrome/browser/ui/webui/tracing_ui.cc |
| =================================================================== |
| --- chrome/browser/ui/webui/tracing_ui.cc (revision 107010) |
| +++ chrome/browser/ui/webui/tracing_ui.cc (working copy) |
| @@ -8,7 +8,6 @@ |
| #include "base/bind.h" |
| #include "base/bind_helpers.h" |
| -#include "base/callback_old.h" |
| #include "base/command_line.h" |
| #include "base/file_util.h" |
| #include "base/memory/scoped_ptr.h" |
| @@ -48,7 +47,8 @@ |
| : public WebUIMessageHandler, |
| public SelectFileDialog::Listener, |
| public base::SupportsWeakPtr<TracingMessageHandler>, |
| - public TraceSubscriber { |
| + public TraceSubscriber, |
| + public GpuDataManager::Observer { |
| public: |
| TracingMessageHandler(); |
| virtual ~TracingMessageHandler(); |
| @@ -66,6 +66,9 @@ |
| virtual void OnTraceDataCollected(const std::string& trace_fragment); |
| virtual void OnTraceBufferPercentFullReply(float percent_full); |
| + // GpuDataManager::Observer implementation. |
| + virtual void OnGpuInfoUpdate() OVERRIDE; |
| + |
| // Messages. |
| void OnTracingControllerInitialized(const ListValue* list); |
| void OnBeginTracing(const ListValue* list); |
| @@ -75,9 +78,6 @@ |
| void OnSaveTraceFile(const ListValue* list); |
| // Callbacks. |
| - void OnGpuInfoUpdate(); |
| - |
| - // Callbacks. |
| void LoadTraceFileComplete(std::string* file_contents); |
| void SaveTraceFileComplete(); |
| @@ -98,9 +98,6 @@ |
| // Cache the Singleton for efficiency. |
| GpuDataManager* gpu_data_manager_; |
| - // Callback called when the GPU info is updated. |
| - Callback0::Type* gpu_info_update_callback_; |
| - |
| DISALLOW_COPY_AND_ASSIGN(TracingMessageHandler); |
| }; |
| @@ -138,17 +135,13 @@ |
| TracingMessageHandler::TracingMessageHandler() |
| : select_trace_file_dialog_type_(SelectFileDialog::SELECT_NONE), |
| - trace_enabled_(false), |
| - gpu_info_update_callback_(NULL) { |
| + trace_enabled_(false) { |
| gpu_data_manager_ = GpuDataManager::GetInstance(); |
| DCHECK(gpu_data_manager_); |
| } |
| TracingMessageHandler::~TracingMessageHandler() { |
| - if (gpu_info_update_callback_) { |
| - gpu_data_manager_->RemoveGpuInfoUpdateCallback(gpu_info_update_callback_); |
| - delete gpu_info_update_callback_; |
| - } |
| + gpu_data_manager_->RemoveObserver(this); |
| if (select_trace_file_dialog_) |
| select_trace_file_dialog_->ListenerDestroyed(); |
| @@ -190,12 +183,8 @@ |
| const ListValue* args) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - DCHECK(!gpu_info_update_callback_); |
| - |
| // Watch for changes in GPUInfo |
| - gpu_info_update_callback_ = |
| - NewCallback(this, &TracingMessageHandler::OnGpuInfoUpdate); |
| - gpu_data_manager_->AddGpuInfoUpdateCallback(gpu_info_update_callback_); |
| + gpu_data_manager_->AddObserver(this); |
|
Zhenyao Mo
2011/10/26 00:03:12
Since we always call RemoveObserver() in destructo
csilv
2011/10/26 00:16:14
This is actually a better approach to do it here.
|
| // Tell GpuDataManager it should have full GpuInfo. If the |
| // Gpu process has not run yet, this will trigger its launch. |