// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview A helper object used by the
* chrome://metrics-internals/structured page to interact with the browser.
*/
import {sendWithPromise} from 'chrome://resources/js/cr.js';
import type {StructuredMetricEvent, StructuredMetricsSummary} from './structured_utils.js';
export interface StructuredMetricsBrowserProxy {
/**
* Fetches recorded events from Structured Metrics Service.
*/
fetchStructuredMetricsEvents(): Promise<StructuredMetricEvent[]>;
/**
* Fetches a summary of the Structured Metrics Service.
*/
fetchStructuredMetricsSummary(): Promise<StructuredMetricsSummary>;
}
export class StructuredMetricsBrowserProxyImpl implements
StructuredMetricsBrowserProxy {
fetchStructuredMetricsEvents() {
return sendWithPromise('fetchStructuredMetricsEvents');
}
fetchStructuredMetricsSummary() {
return sendWithPromise('fetchStructuredMetricsSummary');
}
static getInstance() {
return instance || (instance = new StructuredMetricsBrowserProxyImpl());
}
}
let instance: StructuredMetricsBrowserProxy|null = null;