Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(286)

Side by Side Diff: chrome/browser/ui/webui/tracing_ui.cc

Issue 10154004: re-use WebUIs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix reload DCHECKs Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/tracing_ui.h" 5 #include "chrome/browser/ui/webui/tracing_ui.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 SelectFileDialog::Type select_trace_file_dialog_type_; 109 SelectFileDialog::Type select_trace_file_dialog_type_;
110 110
111 // The trace data that is to be written to the file on saving. 111 // The trace data that is to be written to the file on saving.
112 scoped_ptr<std::string> trace_data_to_save_; 112 scoped_ptr<std::string> trace_data_to_save_;
113 113
114 // True while tracing is active. 114 // True while tracing is active.
115 bool trace_enabled_; 115 bool trace_enabled_;
116 116
117 // True while system tracing is active. 117 // True while system tracing is active.
118 bool system_trace_in_progress_; 118 bool system_trace_in_progress_;
119 119
Dan Beam 2012/04/21 02:53:07 doc comment
120 bool observing_;
121
120 void OnEndSystemTracingAck( 122 void OnEndSystemTracingAck(
121 const scoped_refptr<base::RefCountedString>& events_str_ptr); 123 const scoped_refptr<base::RefCountedString>& events_str_ptr);
122 124
123 DISALLOW_COPY_AND_ASSIGN(TracingMessageHandler); 125 DISALLOW_COPY_AND_ASSIGN(TracingMessageHandler);
124 }; 126 };
125 127
126 // A proxy passed to the Read and Write tasks used when loading or saving trace 128 // A proxy passed to the Read and Write tasks used when loading or saving trace
127 // data. 129 // data.
128 class TaskProxy : public base::RefCountedThreadSafe<TaskProxy> { 130 class TaskProxy : public base::RefCountedThreadSafe<TaskProxy> {
129 public: 131 public:
(...skipping 21 matching lines...) Expand all
151 153
152 //////////////////////////////////////////////////////////////////////////////// 154 ////////////////////////////////////////////////////////////////////////////////
153 // 155 //
154 // TracingMessageHandler 156 // TracingMessageHandler
155 // 157 //
156 //////////////////////////////////////////////////////////////////////////////// 158 ////////////////////////////////////////////////////////////////////////////////
157 159
158 TracingMessageHandler::TracingMessageHandler() 160 TracingMessageHandler::TracingMessageHandler()
159 : select_trace_file_dialog_type_(SelectFileDialog::SELECT_NONE), 161 : select_trace_file_dialog_type_(SelectFileDialog::SELECT_NONE),
160 trace_enabled_(false), 162 trace_enabled_(false),
161 system_trace_in_progress_(false) { 163 system_trace_in_progress_(false),
164 observing_(true) {
stuartmorgan 2012/04/24 09:12:20 Same issue here.
Evan Stade 2012/04/24 17:52:40 Done.
162 } 165 }
163 166
164 TracingMessageHandler::~TracingMessageHandler() { 167 TracingMessageHandler::~TracingMessageHandler() {
165 GpuDataManager::GetInstance()->RemoveObserver(this); 168 GpuDataManager::GetInstance()->RemoveObserver(this);
166 169
167 if (select_trace_file_dialog_) 170 if (select_trace_file_dialog_)
168 select_trace_file_dialog_->ListenerDestroyed(); 171 select_trace_file_dialog_->ListenerDestroyed();
169 172
170 // If we are the current subscriber, this will result in ending tracing. 173 // If we are the current subscriber, this will result in ending tracing.
171 TraceController::GetInstance()->CancelSubscriber(this); 174 TraceController::GetInstance()->CancelSubscriber(this);
(...skipping 29 matching lines...) Expand all
201 web_ui()->RegisterMessageCallback("saveTraceFile", 204 web_ui()->RegisterMessageCallback("saveTraceFile",
202 base::Bind(&TracingMessageHandler::OnSaveTraceFile, 205 base::Bind(&TracingMessageHandler::OnSaveTraceFile,
203 base::Unretained(this))); 206 base::Unretained(this)));
204 } 207 }
205 208
206 void TracingMessageHandler::OnTracingControllerInitialized( 209 void TracingMessageHandler::OnTracingControllerInitialized(
207 const ListValue* args) { 210 const ListValue* args) {
208 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 211 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
209 212
210 // Watch for changes in GPUInfo 213 // Watch for changes in GPUInfo
211 GpuDataManager::GetInstance()->AddObserver(this); 214 if (!observing_)
215 GpuDataManager::GetInstance()->AddObserver(this);
216 observing_ = true;
212 217
213 // Tell GpuDataManager it should have full GpuInfo. If the 218 // Tell GpuDataManager it should have full GpuInfo. If the
214 // Gpu process has not run yet, this will trigger its launch. 219 // Gpu process has not run yet, this will trigger its launch.
215 GpuDataManager::GetInstance()->RequestCompleteGpuInfoIfNeeded(); 220 GpuDataManager::GetInstance()->RequestCompleteGpuInfoIfNeeded();
216 221
217 // Run callback immediately in case the info is ready and no update in the 222 // Run callback immediately in case the info is ready and no update in the
218 // future. 223 // future.
219 OnGpuInfoUpdate(); 224 OnGpuInfoUpdate();
220 225
221 // Send the client info to the tracingController 226 // Send the client info to the tracingController
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 // 485 //
481 //////////////////////////////////////////////////////////////////////////////// 486 ////////////////////////////////////////////////////////////////////////////////
482 487
483 TracingUI::TracingUI(content::WebUI* web_ui) : WebUIController(web_ui) { 488 TracingUI::TracingUI(content::WebUI* web_ui) : WebUIController(web_ui) {
484 web_ui->AddMessageHandler(new TracingMessageHandler()); 489 web_ui->AddMessageHandler(new TracingMessageHandler());
485 490
486 // Set up the chrome://tracing/ source. 491 // Set up the chrome://tracing/ source.
487 Profile::FromWebUI(web_ui)-> 492 Profile::FromWebUI(web_ui)->
488 GetChromeURLDataManager()->AddDataSource(CreateTracingHTMLSource()); 493 GetChromeURLDataManager()->AddDataSource(CreateTracingHTMLSource());
489 } 494 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698