text: // Copyright (c) 2011 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_TRACING_UI_H_
  #define CONTENT_BROWSER_TRACING_TRACING_UI_H_
  
  #include <stdint.h>
  
  #include <map>
  #include <string>
  
  #include "base/macros.h"
  #include "base/memory/weak_ptr.h"
  #include "content/public/browser/web_ui_controller.h"
  
  namespace base {
  namespace trace_event {
  class TraceConfig;
  }  // namespace trace_event
  }  // namespace base
  
  namespace content {
  
  class TracingDelegate;
  
  // The C++ back-end for the chrome://tracing webui page.
  class CONTENT_EXPORT TracingUI : public WebUIController {
   public:
    explicit TracingUI(WebUI* web_ui);
  
    TracingUI(const TracingUI&) = delete;
    TracingUI& operator=(const TracingUI&) = delete;
  
    ~TracingUI() override;
  
    // Public for testing.
    static bool GetTracingOptions(const std::string& data64,
                                  base::trace_event::TraceConfig& trace_config,
                                  std::string& out_stream_format);
  
   private:
    std::unique_ptr<TracingDelegate> delegate_;
    base::WeakPtrFactory<TracingUI> weak_factory_{this};
  };
  
  }  // namespace content
  
  #endif  // CONTENT_BROWSER_TRACING_TRACING_UI_H_
  