Index: content/browser/tracing/trace_controller_impl.h |
diff --git a/content/browser/tracing/trace_controller_impl.h b/content/browser/tracing/trace_controller_impl.h |
index f24d283a125972a2b5be848f418a972a929e0d7b..08afa52b2d6ff1608bee44bf350e144c40640824 100644 |
--- a/content/browser/tracing/trace_controller_impl.h |
+++ b/content/browser/tracing/trace_controller_impl.h |
@@ -30,7 +30,13 @@ class TraceControllerImpl : public TraceController { |
virtual bool BeginTracing(TraceSubscriber* subscriber, |
const std::string& category_patterns, |
base::debug::TraceLog::Options options) OVERRIDE; |
- virtual bool EndTracingAsync(TraceSubscriber* subscriber) OVERRIDE; |
+ virtual bool EndTracingAsync(TraceSubscriber* subscriber) OVERRIDE; |
+ virtual bool BeginContinuousSamplingTracing( |
+ TraceSubscriber* subscriber) OVERRIDE; |
+ virtual bool EndContinuousSamplingTracing( |
+ TraceSubscriber* subscriber) OVERRIDE; |
+ virtual bool ShowContinuousSamplingTracingAsync( |
+ TraceSubscriber* subscriber) OVERRIDE; |
virtual bool GetTraceBufferPercentFullAsync( |
TraceSubscriber* subscriber) OVERRIDE; |
virtual bool SetWatchEvent(TraceSubscriber* subscriber, |
@@ -50,14 +56,38 @@ class TraceControllerImpl : public TraceController { |
TraceControllerImpl(); |
virtual ~TraceControllerImpl(); |
- bool is_tracing_enabled() const { |
- return can_end_tracing(); |
+ bool can_begin_tracing(TraceSubscriber* subscriber) const { |
+ return !is_tracing_ && |
+ (subscriber_ == NULL || subscriber == subscriber_); |
+ } |
+ |
+ bool can_end_tracing(TraceSubscriber* subscriber) const { |
+ return is_tracing_ && pending_end_ack_count_ == 0 && |
+ subscriber == subscriber_; |
} |
- bool can_end_tracing() const { |
+ bool is_tracing_enabled() const { |
return is_tracing_ && pending_end_ack_count_ == 0; |
} |
+ bool can_begin_continuous_sampling_tracing( |
+ TraceSubscriber* subscriber) const { |
+ return !is_continuous_sampling_tracing_ && |
+ (continuous_sampling_subscriber_ == NULL || |
+ subscriber == continuous_sampling_subscriber_); |
+ } |
+ |
+ bool can_end_continuous_sampling_tracing(TraceSubscriber* subscriber) const { |
+ return is_continuous_sampling_tracing_ && |
+ pending_show_continuous_sampling_ack_count_ == 0 && |
+ subscriber == continuous_sampling_subscriber_; |
+ } |
+ |
+ bool is_continuous_sampling_tracing_enabled() const { |
+ return is_continuous_sampling_tracing_ && |
+ pending_show_continuous_sampling_ack_count_ == 0; |
+ } |
+ |
// Can get Buffer Percent Full |
bool can_get_buffer_percent_full() const { |
return is_tracing_ && |
@@ -65,30 +95,32 @@ class TraceControllerImpl : public TraceController { |
pending_bpf_ack_count_ == 0; |
} |
- bool can_begin_tracing(TraceSubscriber* subscriber) const { |
- return !is_tracing_ && |
- (subscriber_ == NULL || subscriber == subscriber_); |
- } |
- |
// Methods for use by TraceMessageFilter. |
void AddFilter(TraceMessageFilter* filter); |
void RemoveFilter(TraceMessageFilter* filter); |
void OnTracingBegan(TraceSubscriber* subscriber); |
void OnEndTracingAck(const std::vector<std::string>& known_category_groups); |
+ void OnShowContinuousSamplingTracingAck(); |
void OnTraceDataCollected( |
const scoped_refptr<base::RefCountedString>& events_str_ptr); |
+ void OnContinuousSamplingTraceDataCollected( |
+ const scoped_refptr<base::RefCountedString>& events_str_ptr); |
void OnTraceNotification(int notification); |
void OnTraceBufferPercentFullReply(float percent_full); |
FilterMap filters_; |
TraceSubscriber* subscriber_; |
+ TraceSubscriber* continuous_sampling_subscriber_; |
// Pending acks for EndTracingAsync: |
int pending_end_ack_count_; |
+ // Pending acks for ShowContinuousSamplingTracingAsync: |
+ int pending_show_continuous_sampling_ack_count_; |
// Pending acks for GetTraceBufferPercentFullAsync: |
int pending_bpf_ack_count_; |
float maximum_bpf_; |
bool is_tracing_; |
+ bool is_continuous_sampling_tracing_; |
bool is_get_category_groups_; |
std::set<std::string> known_category_groups_; |
std::string watch_category_; |