OLD | NEW |
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 #ifndef CONTENT_BROWSER_TRACING_TRACE_CONTROLLER_IMPL_H_ | 5 #ifndef CONTENT_BROWSER_TRACING_TRACE_CONTROLLER_IMPL_H_ |
6 #define CONTENT_BROWSER_TRACING_TRACE_CONTROLLER_IMPL_H_ | 6 #define CONTENT_BROWSER_TRACING_TRACE_CONTROLLER_IMPL_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 12 matching lines...) Expand all Loading... |
23 static TraceControllerImpl* GetInstance(); | 23 static TraceControllerImpl* GetInstance(); |
24 | 24 |
25 // Called on the main thread of the browser process to initialize | 25 // Called on the main thread of the browser process to initialize |
26 // startup tracing. | 26 // startup tracing. |
27 void InitStartupTracing(const CommandLine& command_line); | 27 void InitStartupTracing(const CommandLine& command_line); |
28 | 28 |
29 // TraceController implementation: | 29 // TraceController implementation: |
30 virtual bool BeginTracing(TraceSubscriber* subscriber, | 30 virtual bool BeginTracing(TraceSubscriber* subscriber, |
31 const std::string& category_patterns, | 31 const std::string& category_patterns, |
32 base::debug::TraceLog::Options options) OVERRIDE; | 32 base::debug::TraceLog::Options options) OVERRIDE; |
33 virtual bool EndTracingAsync(TraceSubscriber* subscriber) OVERRIDE; | 33 virtual bool EndTracingAsync(TraceSubscriber* subscriber) OVERRIDE; |
| 34 virtual bool BeginContinuousSamplingTracing( |
| 35 TraceSubscriber* subscriber) OVERRIDE; |
| 36 virtual bool EndContinuousSamplingTracing( |
| 37 TraceSubscriber* subscriber) OVERRIDE; |
| 38 virtual bool ShowContinuousSamplingTracingAsync( |
| 39 TraceSubscriber* subscriber) OVERRIDE; |
34 virtual bool GetTraceBufferPercentFullAsync( | 40 virtual bool GetTraceBufferPercentFullAsync( |
35 TraceSubscriber* subscriber) OVERRIDE; | 41 TraceSubscriber* subscriber) OVERRIDE; |
36 virtual bool SetWatchEvent(TraceSubscriber* subscriber, | 42 virtual bool SetWatchEvent(TraceSubscriber* subscriber, |
37 const std::string& category_name, | 43 const std::string& category_name, |
38 const std::string& event_name) OVERRIDE; | 44 const std::string& event_name) OVERRIDE; |
39 virtual bool CancelWatchEvent(TraceSubscriber* subscriber) OVERRIDE; | 45 virtual bool CancelWatchEvent(TraceSubscriber* subscriber) OVERRIDE; |
40 virtual void CancelSubscriber(TraceSubscriber* subscriber) OVERRIDE; | 46 virtual void CancelSubscriber(TraceSubscriber* subscriber) OVERRIDE; |
41 virtual bool GetKnownCategoryGroupsAsync(TraceSubscriber* subscriber) | 47 virtual bool GetKnownCategoryGroupsAsync(TraceSubscriber* subscriber) |
42 OVERRIDE; | 48 OVERRIDE; |
43 | 49 |
44 private: | 50 private: |
45 typedef std::set<scoped_refptr<TraceMessageFilter> > FilterMap; | 51 typedef std::set<scoped_refptr<TraceMessageFilter> > FilterMap; |
46 | 52 |
47 friend struct base::DefaultLazyInstanceTraits<TraceControllerImpl>; | 53 friend struct base::DefaultLazyInstanceTraits<TraceControllerImpl>; |
48 friend class TraceMessageFilter; | 54 friend class TraceMessageFilter; |
49 | 55 |
50 TraceControllerImpl(); | 56 TraceControllerImpl(); |
51 virtual ~TraceControllerImpl(); | 57 virtual ~TraceControllerImpl(); |
52 | 58 |
53 bool is_tracing_enabled() const { | 59 bool can_begin_tracing(TraceSubscriber* subscriber) const { |
54 return can_end_tracing(); | 60 return !is_tracing_ && |
| 61 (subscriber_ == NULL || subscriber == subscriber_); |
55 } | 62 } |
56 | 63 |
57 bool can_end_tracing() const { | 64 bool can_end_tracing(TraceSubscriber* subscriber) const { |
| 65 return is_tracing_ && pending_end_ack_count_ == 0 && |
| 66 subscriber == subscriber_; |
| 67 } |
| 68 |
| 69 bool is_tracing_enabled() const { |
58 return is_tracing_ && pending_end_ack_count_ == 0; | 70 return is_tracing_ && pending_end_ack_count_ == 0; |
59 } | 71 } |
60 | 72 |
| 73 bool can_begin_continuous_sampling_tracing( |
| 74 TraceSubscriber* subscriber) const { |
| 75 return !is_continuous_sampling_tracing_ && |
| 76 (continuous_sampling_subscriber_ == NULL || |
| 77 subscriber == continuous_sampling_subscriber_); |
| 78 } |
| 79 |
| 80 bool can_end_continuous_sampling_tracing(TraceSubscriber* subscriber) const { |
| 81 return is_continuous_sampling_tracing_ && |
| 82 pending_show_continuous_sampling_ack_count_ == 0 && |
| 83 subscriber == continuous_sampling_subscriber_; |
| 84 } |
| 85 |
| 86 bool is_continuous_sampling_tracing_enabled() const { |
| 87 return is_continuous_sampling_tracing_ && |
| 88 pending_show_continuous_sampling_ack_count_ == 0; |
| 89 } |
| 90 |
61 // Can get Buffer Percent Full | 91 // Can get Buffer Percent Full |
62 bool can_get_buffer_percent_full() const { | 92 bool can_get_buffer_percent_full() const { |
63 return is_tracing_ && | 93 return is_tracing_ && |
64 pending_end_ack_count_ == 0 && | 94 pending_end_ack_count_ == 0 && |
65 pending_bpf_ack_count_ == 0; | 95 pending_bpf_ack_count_ == 0; |
66 } | 96 } |
67 | 97 |
68 bool can_begin_tracing(TraceSubscriber* subscriber) const { | |
69 return !is_tracing_ && | |
70 (subscriber_ == NULL || subscriber == subscriber_); | |
71 } | |
72 | |
73 // Methods for use by TraceMessageFilter. | 98 // Methods for use by TraceMessageFilter. |
74 | 99 |
75 void AddFilter(TraceMessageFilter* filter); | 100 void AddFilter(TraceMessageFilter* filter); |
76 void RemoveFilter(TraceMessageFilter* filter); | 101 void RemoveFilter(TraceMessageFilter* filter); |
77 void OnTracingBegan(TraceSubscriber* subscriber); | 102 void OnTracingBegan(TraceSubscriber* subscriber); |
78 void OnEndTracingAck(const std::vector<std::string>& known_category_groups); | 103 void OnEndTracingAck(const std::vector<std::string>& known_category_groups); |
| 104 void OnShowContinuousSamplingTracingAck(); |
79 void OnTraceDataCollected( | 105 void OnTraceDataCollected( |
80 const scoped_refptr<base::RefCountedString>& events_str_ptr); | 106 const scoped_refptr<base::RefCountedString>& events_str_ptr); |
| 107 void OnContinuousSamplingTraceDataCollected( |
| 108 const scoped_refptr<base::RefCountedString>& events_str_ptr); |
81 void OnTraceNotification(int notification); | 109 void OnTraceNotification(int notification); |
82 void OnTraceBufferPercentFullReply(float percent_full); | 110 void OnTraceBufferPercentFullReply(float percent_full); |
83 | 111 |
84 FilterMap filters_; | 112 FilterMap filters_; |
85 TraceSubscriber* subscriber_; | 113 TraceSubscriber* subscriber_; |
| 114 TraceSubscriber* continuous_sampling_subscriber_; |
86 // Pending acks for EndTracingAsync: | 115 // Pending acks for EndTracingAsync: |
87 int pending_end_ack_count_; | 116 int pending_end_ack_count_; |
| 117 // Pending acks for ShowContinuousSamplingTracingAsync: |
| 118 int pending_show_continuous_sampling_ack_count_; |
88 // Pending acks for GetTraceBufferPercentFullAsync: | 119 // Pending acks for GetTraceBufferPercentFullAsync: |
89 int pending_bpf_ack_count_; | 120 int pending_bpf_ack_count_; |
90 float maximum_bpf_; | 121 float maximum_bpf_; |
91 bool is_tracing_; | 122 bool is_tracing_; |
| 123 bool is_continuous_sampling_tracing_; |
92 bool is_get_category_groups_; | 124 bool is_get_category_groups_; |
93 std::set<std::string> known_category_groups_; | 125 std::set<std::string> known_category_groups_; |
94 std::string watch_category_; | 126 std::string watch_category_; |
95 std::string watch_name_; | 127 std::string watch_name_; |
96 base::debug::TraceLog::Options trace_options_; | 128 base::debug::TraceLog::Options trace_options_; |
97 base::debug::CategoryFilter category_filter_; | 129 base::debug::CategoryFilter category_filter_; |
98 | 130 |
99 DISALLOW_COPY_AND_ASSIGN(TraceControllerImpl); | 131 DISALLOW_COPY_AND_ASSIGN(TraceControllerImpl); |
100 }; | 132 }; |
101 | 133 |
102 } // namespace content | 134 } // namespace content |
103 | 135 |
104 #endif // CONTENT_BROWSER_TRACING_TRACE_CONTROLLER_IMPL_H_ | 136 #endif // CONTENT_BROWSER_TRACING_TRACE_CONTROLLER_IMPL_H_ |
OLD | NEW |