// 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; /** * Fetches a summary of the Structured Metrics Service. */ fetchStructuredMetricsSummary(): Promise; } 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;