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

Side by Side Diff: chrome/browser/metrics/tracking_synchronizer.cc

Issue 8760011: Move the ProcessType enum out to its own file. This is in preparation for getting rid of ChildPro... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix mac Created 9 years 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/metrics/tracking_synchronizer.h" 5 #include "chrome/browser/metrics/tracking_synchronizer.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/json/json_reader.h" 8 #include "base/json/json_reader.h"
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
12 #include "base/threading/thread.h" 12 #include "base/threading/thread.h"
13 #include "base/tracked_objects.h" 13 #include "base/tracked_objects.h"
14 #include "chrome/browser/ui/webui/tracing_ui.h" 14 #include "chrome/browser/ui/webui/tracing_ui.h"
15 #include "chrome/common/chrome_constants.h" 15 #include "chrome/common/chrome_constants.h"
16 #include "chrome/common/render_messages.h" 16 #include "chrome/common/render_messages.h"
17 #include "content/common/child_process_info.h"
17 #include "content/public/browser/browser_thread.h" 18 #include "content/public/browser/browser_thread.h"
18 #include "content/public/browser/render_process_host.h" 19 #include "content/public/browser/render_process_host.h"
19 20
20 using base::TimeTicks; 21 using base::TimeTicks;
21 using content::BrowserThread; 22 using content::BrowserThread;
22 23
23 namespace chrome_browser_metrics { 24 namespace chrome_browser_metrics {
24 25
25 // Negative numbers are never used as sequence numbers. We explicitly pick a 26 // Negative numbers are never used as sequence numbers. We explicitly pick a
26 // negative number that is "so negative" that even when we add one (as is done 27 // negative number that is "so negative" that even when we add one (as is done
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 // Ignore processes that don't have a connection, such as crashed tabs. 122 // Ignore processes that don't have a connection, such as crashed tabs.
122 if (!process || !process->HasConnection()) 123 if (!process || !process->HasConnection())
123 return; 124 return;
124 process->Send(new ChromeViewMsg_SetTrackingStatus(enable)); 125 process->Send(new ChromeViewMsg_SetTrackingStatus(enable));
125 } 126 }
126 127
127 // static 128 // static
128 void TrackingSynchronizer::DeserializeTrackingList( 129 void TrackingSynchronizer::DeserializeTrackingList(
129 int sequence_number, 130 int sequence_number,
130 const std::string& tracking_data, 131 const std::string& tracking_data,
131 ChildProcessInfo::ProcessType process_type) { 132 content::ProcessType process_type) {
132 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 133 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
133 BrowserThread::PostTask( 134 BrowserThread::PostTask(
134 BrowserThread::UI, FROM_HERE, 135 BrowserThread::UI, FROM_HERE,
135 base::Bind( 136 base::Bind(
136 &TrackingSynchronizer::DeserializeTrackingListOnUI, 137 &TrackingSynchronizer::DeserializeTrackingListOnUI,
137 sequence_number, tracking_data, process_type)); 138 sequence_number, tracking_data, process_type));
138 } 139 }
139 140
140 // static 141 // static
141 void TrackingSynchronizer::DeserializeTrackingListOnUI( 142 void TrackingSynchronizer::DeserializeTrackingListOnUI(
142 int sequence_number, 143 int sequence_number,
143 const std::string& tracking_data, 144 const std::string& tracking_data,
144 ChildProcessInfo::ProcessType process_type) { 145 content::ProcessType process_type) {
145 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 146 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
146 147
147 TrackingSynchronizer* current_synchronizer = CurrentSynchronizer(); 148 TrackingSynchronizer* current_synchronizer = CurrentSynchronizer();
148 if (current_synchronizer == NULL) 149 if (current_synchronizer == NULL)
149 return; 150 return;
150 151
151 base::Value* value = 152 base::Value* value =
152 base::JSONReader().JsonToValue(tracking_data, false, true); 153 base::JSONReader().JsonToValue(tracking_data, false, true);
153 DCHECK(value->GetType() == base::Value::TYPE_DICTIONARY); 154 DCHECK(value->GetType() == base::Value::TYPE_DICTIONARY);
154 base::DictionaryValue* dictionary_value = 155 base::DictionaryValue* dictionary_value =
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 ++request->processes_pending_; 188 ++request->processes_pending_;
188 if (!render_process_host->Send( 189 if (!render_process_host->Send(
189 new ChromeViewMsg_GetRendererTrackedData(sequence_number))) { 190 new ChromeViewMsg_GetRendererTrackedData(sequence_number))) {
190 DecrementPendingProcesses(sequence_number); 191 DecrementPendingProcesses(sequence_number);
191 } 192 }
192 } 193 }
193 194
194 // Get the ThreadData for the browser process and send it back. 195 // Get the ThreadData for the browser process and send it back.
195 base::DictionaryValue* value = tracked_objects::ThreadData::ToValue(); 196 base::DictionaryValue* value = tracked_objects::ThreadData::ToValue();
196 const std::string process_type = 197 const std::string process_type =
197 ChildProcessInfo::GetTypeNameInEnglish(ChildProcessInfo::BROWSER_PROCESS); 198 ChildProcessInfo::GetTypeNameInEnglish(content::PROCESS_TYPE_BROWSER);
198 value->SetString("process_type", process_type); 199 value->SetString("process_type", process_type);
199 value->SetInteger("process_id", base::GetCurrentProcId()); 200 value->SetInteger("process_id", base::GetCurrentProcId());
200 DCHECK_GT(request->processes_pending_, 0); 201 DCHECK_GT(request->processes_pending_, 0);
201 DecrementPendingProcessesAndSendData(sequence_number, value); 202 DecrementPendingProcessesAndSendData(sequence_number, value);
202 203
203 return sequence_number; 204 return sequence_number;
204 } 205 }
205 206
206 void TrackingSynchronizer::DecrementPendingProcessesAndSendData( 207 void TrackingSynchronizer::DecrementPendingProcessesAndSendData(
207 int sequence_number, 208 int sequence_number,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 // Watch out for wrapping to a negative number. 266 // Watch out for wrapping to a negative number.
266 if (last_used_sequence_number_ < 0) 267 if (last_used_sequence_number_ < 0)
267 last_used_sequence_number_ = 1; 268 last_used_sequence_number_ = 1;
268 return last_used_sequence_number_; 269 return last_used_sequence_number_;
269 } 270 }
270 271
271 // static 272 // static
272 TrackingSynchronizer* TrackingSynchronizer::tracking_synchronizer_ = NULL; 273 TrackingSynchronizer* TrackingSynchronizer::tracking_synchronizer_ = NULL;
273 274
274 } // namespace chrome_browser_metrics 275 } // namespace chrome_browser_metrics
OLDNEW
« no previous file with comments | « chrome/browser/metrics/tracking_synchronizer.h ('k') | chrome/browser/nacl_host/nacl_broker_host_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698