Index: components/metrics/call_stack_profile_metrics_provider.h |
diff --git a/components/metrics/call_stack_profile_metrics_provider.h b/components/metrics/call_stack_profile_metrics_provider.h |
index a2bb0f85a31bd8de9d0c53ad4d138ed1940aed4a..8f634bb7cb10dbcde08ec2c00f7ef9fdc2abd472 100644 |
--- a/components/metrics/call_stack_profile_metrics_provider.h |
+++ b/components/metrics/call_stack_profile_metrics_provider.h |
@@ -7,9 +7,15 @@ |
#include <vector> |
+#include "base/memory/ref_counted.h" |
+#include "base/memory/weak_ptr.h" |
#include "base/profiler/stack_sampling_profiler.h" |
#include "components/metrics/metrics_provider.h" |
+namespace base { |
+class MessageLoopProxy; |
+} // namespace base |
+ |
namespace metrics { |
class ChromeUserMetricsExtension; |
@@ -20,6 +26,8 @@ class CallStackProfileMetricsProvider : public MetricsProvider { |
~CallStackProfileMetricsProvider() override; |
// MetricsProvider: |
+ void OnRecordingEnabled() override; |
+ void OnRecordingDisabled() override; |
void ProvideGeneralMetrics(ChromeUserMetricsExtension* uma_proto) override; |
// Uses |profiles| as the source data for the next invocation of |
@@ -28,8 +36,28 @@ class CallStackProfileMetricsProvider : public MetricsProvider { |
void SetSourceProfilesForTesting( |
const std::vector<base::StackSamplingProfiler::Profile>& profiles); |
+ protected: |
+ // Finch field trial and group for reporting profiles. Provided here for test |
+ // use. |
+ static const char kFieldTrialName[]; |
+ static const char kReportProfilesGroupName[]; |
+ |
private: |
- std::vector<base::StackSamplingProfiler::Profile> source_profiles_for_test_; |
+ // Returns true if reporting of profiles is enabled according to the |
+ // controlling Finch field trial. |
+ static bool IsSamplingProfilingReportingEnabled(); |
+ |
+ // Invoked by the profiler on another thread. |
+ static void ReceiveCompletedProfiles( |
+ scoped_refptr<base::MessageLoopProxy> message_loop, |
+ base::WeakPtr<CallStackProfileMetricsProvider> provider, |
+ const std::vector<base::StackSamplingProfiler::Profile>& profiles); |
+ void AppendCompletedProfiles( |
+ const std::vector<base::StackSamplingProfiler::Profile>& profiles); |
+ |
+ std::vector<base::StackSamplingProfiler::Profile> pending_profiles_; |
+ |
+ base::WeakPtrFactory<CallStackProfileMetricsProvider> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(CallStackProfileMetricsProvider); |
}; |