// Copyright 2015 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_BACKGROUND_TRACING_CONFIG_IMPL_H_ #define CONTENT_BROWSER_TRACING_BACKGROUND_TRACING_CONFIG_IMPL_H_ #include "base/gtest_prod_util.h" #include "base/macros.h" #include "base/memory/scoped_vector.h" #include "content/common/content_export.h" #include "content/public/browser/background_tracing_config.h" namespace content { class BackgroundTracingRule; class CONTENT_EXPORT BackgroundTracingConfigImpl : public BackgroundTracingConfig { public: explicit BackgroundTracingConfigImpl(TracingMode tracing_mode); ~BackgroundTracingConfigImpl() override; // From BackgroundTracingConfig void IntoDict(base::DictionaryValue* dict) const override; enum CategoryPreset { BENCHMARK, BENCHMARK_DEEP, BENCHMARK_GPU, BENCHMARK_IPC, BENCHMARK_STARTUP, BENCHMARK_BLINK_GC, BLINK_STYLE }; CategoryPreset category_preset() const { return category_preset_; } void set_category_preset(CategoryPreset category_preset) { category_preset_ = category_preset; } const ScopedVector& rules() const { return rules_; } const std::string& scenario_name() const { return scenario_name_; } const std::string& enable_blink_features() const { return enable_blink_features_; } const std::string& disable_blink_features() const { return disable_blink_features_; } void AddPreemptiveRule(const base::DictionaryValue* dict); void AddReactiveRule( const base::DictionaryValue* dict, BackgroundTracingConfigImpl::CategoryPreset category_preset); static scoped_ptr PreemptiveFromDict( const base::DictionaryValue* dict); static scoped_ptr ReactiveFromDict( const base::DictionaryValue* dict); static scoped_ptr FromDict( const base::DictionaryValue* dict); static std::string CategoryPresetToString( BackgroundTracingConfigImpl::CategoryPreset category_preset); static bool StringToCategoryPreset( const std::string& category_preset_string, BackgroundTracingConfigImpl::CategoryPreset* category_preset); private: FRIEND_TEST_ALL_PREFIXES(BackgroundTracingConfigTest, ValidPreemptiveConfigToString); CategoryPreset category_preset_; ScopedVector rules_; std::string scenario_name_; std::string enable_blink_features_; std::string disable_blink_features_; DISALLOW_COPY_AND_ASSIGN(BackgroundTracingConfigImpl); }; } // namespace content #endif // CONTENT_BROWSER_TRACING_BACKGROUND_TRACING_CONFIG_IMPL_H_