1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28

content / browser / resources / traces_internals / trace_report_browser_proxy.ts [blame]

/* 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, PageHandlerRemote, TraceReportHandlerFactory} from './trace_report.mojom-webui.js';

/** Holds Mojo interfaces for communication with the browser process. */
export class TraceReportBrowserProxy {
  callbackRouter: PageCallbackRouter = new PageCallbackRouter();
  handler: PageHandlerRemote = new PageHandlerRemote();

  constructor() {
    const factory = TraceReportHandlerFactory.getRemote();
    factory.createPageHandler(
        this.callbackRouter.$.bindNewPipeAndPassRemote(),
        this.handler.$.bindNewPipeAndPassReceiver());
  }

  static getInstance(): TraceReportBrowserProxy {
    return instance || (instance = new TraceReportBrowserProxy());
  }

  static setInstance(obj: TraceReportBrowserProxy): void {
    instance = obj;
  }
}

let instance: TraceReportBrowserProxy|null = null;