chromium/chrome/browser/resources/chromeos/enterprise_reporting/browser_proxy.ts

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

import {PageCallbackRouter, PageHandlerFactory, PageHandlerInterface, PageHandlerRemote} from './enterprise_reporting.mojom-webui.js';

export class EnterpriseReportingBrowserProxy {
  callbackRouter: PageCallbackRouter;
  handler: PageHandlerInterface;

  static getInstance(): EnterpriseReportingBrowserProxy {
    if (!instance) {
      const handler = new PageHandlerRemote();
      const callbackRouter = new PageCallbackRouter();
      PageHandlerFactory.getRemote().createPageHandler(
          callbackRouter.$.bindNewPipeAndPassRemote(),
          handler.$.bindNewPipeAndPassReceiver());
      instance = new EnterpriseReportingBrowserProxy(handler, callbackRouter);
    }
    return instance;
  }

  static createInstanceForTest(
      handler: PageHandlerInterface, callbackRouter: PageCallbackRouter) {
    instance = new EnterpriseReportingBrowserProxy(handler, callbackRouter);
  }

  private constructor(
      handler: PageHandlerInterface, callbackRouter: PageCallbackRouter) {
    this.handler = handler;
    this.callbackRouter = callbackRouter;
  }
}

let instance: EnterpriseReportingBrowserProxy|null = null;