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

Side by Side Diff: chrome/renderer/renderer_tracking.cc

Issue 8588023: Collect profiler stats from browser child processes. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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/renderer/renderer_tracking.h" 5 #include "chrome/renderer/renderer_tracking.h"
6 6
7 #include <ctype.h> 7 #include <ctype.h>
8 8
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/message_loop.h" 11 #include "base/message_loop.h"
12 #include "base/process.h" 12 #include "base/process.h"
13 #include "base/process_util.h" 13 #include "base/process_util.h"
14 #include "base/tracked_objects.h" 14 #include "base/tracked_objects.h"
15 #include "chrome/common/render_messages.h" 15 #include "chrome/common/render_messages.h"
16 #include "content/public/renderer/render_thread.h" 16 #include "content/public/renderer/render_thread.h"
17 17
18 using content::RenderThread; 18 using content::RenderThread;
19 19
20 RendererTracking::RendererTracking() 20 RendererTracking::RendererTracking()
21 : ALLOW_THIS_IN_INITIALIZER_LIST(renderer_tracking_factory_(this)) { 21 : ALLOW_THIS_IN_INITIALIZER_LIST(renderer_tracking_factory_(this)) {
22 } 22 }
23 23
24 RendererTracking::~RendererTracking() { 24 RendererTracking::~RendererTracking() {
25 } 25 }
26 26
27 bool RendererTracking::OnControlMessageReceived(const IPC::Message& message) { 27 bool RendererTracking::OnControlMessageReceived(const IPC::Message& message) {
28 bool handled = true; 28 bool handled = true;
29 IPC_BEGIN_MESSAGE_MAP(RendererTracking, message) 29 IPC_BEGIN_MESSAGE_MAP(RendererTracking, message)
30 IPC_MESSAGE_HANDLER(ChromeViewMsg_GetRendererTrackedData, 30 IPC_MESSAGE_HANDLER(ChromeViewMsg_GetRendererProfilerData,
jam 2011/11/19 23:36:25 this whole file, and these chrome specific message
ramant (doing other things) 2011/11/25 23:59:48 Done.
31 OnGetRendererTrackingData) 31 OnGetRendererProfilerData)
32 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetTrackingStatus, 32 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetProfilerStatus,
33 OnSetTrackingStatus) 33 OnSetProfilerStatus)
34 IPC_MESSAGE_UNHANDLED(handled = false) 34 IPC_MESSAGE_UNHANDLED(handled = false)
35 IPC_END_MESSAGE_MAP() 35 IPC_END_MESSAGE_MAP()
36 return handled; 36 return handled;
37 } 37 }
38 38
39 void RendererTracking::OnGetRendererTrackingData(int sequence_number) { 39 void RendererTracking::OnGetRendererProfilerData(
40 int sequence_number,
41 const std::string& process_type) {
40 RenderThread::Get()->GetMessageLoop()->PostTask(FROM_HERE, 42 RenderThread::Get()->GetMessageLoop()->PostTask(FROM_HERE,
41 renderer_tracking_factory_.NewRunnableMethod( 43 renderer_tracking_factory_.NewRunnableMethod(
42 &RendererTracking::UploadAllTrackingData, 44 &RendererTracking::UploadAllProfilerData,
43 sequence_number)); 45 sequence_number,
46 process_type));
44 } 47 }
45 48
46 void RendererTracking::OnSetTrackingStatus(bool enable) { 49 void RendererTracking::OnSetProfilerStatus(bool enable) {
47 tracked_objects::ThreadData::InitializeAndSetTrackingStatus(enable); 50 tracked_objects::ThreadData::InitializeAndSetTrackingStatus(enable);
48 } 51 }
49 52
50 void RendererTracking::UploadAllTrackingData(int sequence_number) { 53 void RendererTracking::UploadAllProfilerData(
54 int sequence_number,
55 const std::string& process_type) {
56 // Get profiler data.
51 scoped_ptr<base::DictionaryValue> value( 57 scoped_ptr<base::DictionaryValue> value(
52 tracked_objects::ThreadData::ToValue()); 58 tracked_objects::ThreadData::ToValue());
59
60 value->SetString("process_type", process_type);
53 value->SetInteger("process_id", base::GetCurrentProcId()); 61 value->SetInteger("process_id", base::GetCurrentProcId());
54 62
55 std::string pickled_tracking_data; 63 std::string pickled_profiler_data;
56 base::JSONWriter::Write(value.get(), false, &pickled_tracking_data); 64 base::JSONWriter::Write(value.get(), false, &pickled_profiler_data);
57 65
58 // Send the sequence number and list of pickled tracking data over synchronous 66 // Send the sequence number and list of pickled profiler data over synchronous
59 // IPC, so we can clear pickled_tracking_data_ afterwards. 67 // IPC, so we can clear pickled_profiler_data_ afterwards.
60 RenderThread::Get()->Send(new ChromeViewHostMsg_RendererTrackedData( 68 RenderThread::Get()->Send(new ChromeViewHostMsg_RendererProfilerData(
61 sequence_number, pickled_tracking_data)); 69 sequence_number, pickled_profiler_data));
62 } 70 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698