| 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 |