chromium/ios/web_view/public/cwv_metrics_provider.h

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_WEB_VIEW_PUBLIC_CWV_METRICS_PROVIDER_H_
#define IOS_WEB_VIEW_PUBLIC_CWV_METRICS_PROVIDER_H_

#import <Foundation/Foundation.h>

#import "cwv_export.h"

NS_ASSUME_NONNULL_BEGIN

// Provides metrics data from ios/web_view to be logged by the client.
CWV_EXPORT
@interface CWVMetricsProvider : NSObject

// Returns the singleton instance of this class.
@property(class, nonatomic, readonly) CWVMetricsProvider* sharedInstance;

- (instancetype)init NS_UNAVAILABLE;

// Returns the new metrics that have been collected since the last call to this
// method. The returned data is drained from the underlying storage, so it is up
// to the caller to ensure its lifetime as needed.
// The data is serialized according to the proto definition found at
// third_party/metrics_proto/chrome_user_metrics_extension.proto.
// This method is thread safe.
- (NSData*)consumeMetrics;

@end

NS_ASSUME_NONNULL_END

#endif  // IOS_WEB_VIEW_PUBLIC_CWV_METRICS_PROVIDER_H_