146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file. 446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef COMPONENTS_METRICS_PROFILER_PROFILER_METRICS_PROVIDER_H_ 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define COMPONENTS_METRICS_PROFILER_PROFILER_METRICS_PROVIDER_H_ 746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/basictypes.h" 946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "components/metrics/metrics_provider.h" 1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "components/metrics/proto/chrome_user_metrics_extension.pb.h" 1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace tracked_objects { 1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)struct ProcessDataSnapshot; 1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace metrics { 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// ProfilerMetricsProvider is responsible for filling out the |profiler_event| 1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// section of the UMA proto. 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass ProfilerMetricsProvider : public MetricsProvider { 2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public: 2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) ProfilerMetricsProvider(); 2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual ~ProfilerMetricsProvider(); 2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // MetricsDataProvider: 2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void ProvideGeneralMetrics( 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ChromeUserMetricsExtension* uma_proto) OVERRIDE; 2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Records the passed profiled data, which should be a snapshot of the 3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // browser's profiled performance during startup for a single process. 3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) void RecordProfilerData( 3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const tracked_objects::ProcessDataSnapshot& process_data, 3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) int process_type); 3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) private: 3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Saved cache of generated Profiler event protos, to be copied into the UMA 3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // proto when ProvideGeneralMetrics() is called. 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ProfilerEventProto profiler_event_cache_; 3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // True if this instance has recorded profiler data since the last call to 4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // ProvideGeneralMetrics(). 4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) bool has_profiler_data_; 4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ProfilerMetricsProvider); 4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}; 4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace metrics 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // COMPONENTS_METRICS_PROFILER_PROFILER_METRICS_PROVIDER_H_ 50