| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c058a04df15d6afc992bb5e0444ef9d3852f9a84
|
| --- /dev/null
|
| +++ b/content/browser/tracing/trace_controller_impl.h
|
| @@ -0,0 +1,105 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CONTENT_BROWSER_TRACING_TRACE_CONTROLLER_IMPL_H_
|
| +#define CONTENT_BROWSER_TRACING_TRACE_CONTROLLER_IMPL_H_
|
| +
|
| +#include <set>
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/debug/trace_event.h"
|
| +#include "base/lazy_instance.h"
|
| +#include "content/public/browser/trace_controller.h"
|
| +
|
| +class CommandLine;
|
| +
|
| +namespace content {
|
| +class TraceMessageFilter;
|
| +
|
| +class TraceControllerImpl : public TraceController {
|
| + public:
|
| + static TraceControllerImpl* GetInstance();
|
| +
|
| + // TraceController implementation:
|
| + virtual bool BeginTracing(TraceSubscriber* subscriber,
|
| + const std::string& category_patterns,
|
| + base::debug::TraceLog::Options options) OVERRIDE;
|
| + virtual bool EndTracingAsync(TraceSubscriber* subscriber) OVERRIDE;
|
| + virtual bool GetTraceBufferPercentFullAsync(
|
| + TraceSubscriber* subscriber) OVERRIDE;
|
| + virtual bool SetWatchEvent(TraceSubscriber* subscriber,
|
| + const std::string& category_name,
|
| + const std::string& event_name) OVERRIDE;
|
| + virtual bool CancelWatchEvent(TraceSubscriber* subscriber) OVERRIDE;
|
| + virtual void CancelSubscriber(TraceSubscriber* subscriber) OVERRIDE;
|
| + virtual bool GetKnownCategoryGroupsAsync(TraceSubscriber* subscriber)
|
| + OVERRIDE;
|
| +
|
| + private:
|
| + typedef std::set<scoped_refptr<TraceMessageFilter> > FilterMap;
|
| +
|
| + friend struct base::DefaultLazyInstanceTraits<TraceControllerImpl>;
|
| + friend class TraceMessageFilter;
|
| +
|
| + TraceControllerImpl();
|
| + virtual ~TraceControllerImpl();
|
| +
|
| + bool is_tracing_enabled() const {
|
| + return can_end_tracing();
|
| + }
|
| +
|
| + bool can_end_tracing() const {
|
| + return is_tracing_ && pending_end_ack_count_ == 0;
|
| + }
|
| +
|
| + // Can get Buffer Percent Full
|
| + bool can_get_buffer_percent_full() const {
|
| + return is_tracing_ &&
|
| + pending_end_ack_count_ == 0 &&
|
| + 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 OnTraceDataCollected(
|
| + const scoped_refptr<base::RefCountedString>& events_str_ptr);
|
| + void OnTraceNotification(int notification);
|
| + void OnTraceBufferPercentFullReply(float percent_full);
|
| +
|
| + // Callback of TraceLog::Flush() for the local trace.
|
| + void OnLocalTraceDataCollected(
|
| + const scoped_refptr<base::RefCountedString>& events_str_ptr,
|
| + bool has_more_events);
|
| +
|
| + FilterMap filters_;
|
| + TraceSubscriber* subscriber_;
|
| + // Pending acks for EndTracingAsync:
|
| + int pending_end_ack_count_;
|
| + // Pending acks for GetTraceBufferPercentFullAsync:
|
| + int pending_bpf_ack_count_;
|
| + float maximum_bpf_;
|
| + bool is_tracing_;
|
| + bool is_get_category_groups_;
|
| + std::set<std::string> known_category_groups_;
|
| + std::string watch_category_;
|
| + std::string watch_name_;
|
| + base::debug::TraceLog::Options trace_options_;
|
| + base::debug::CategoryFilter category_filter_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TraceControllerImpl);
|
| +};
|
| +
|
| +} // namespace content
|
| +
|
| +#endif // CONTENT_BROWSER_TRACING_TRACE_CONTROLLER_IMPL_H_
|
|
|