| // 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 {CompanionPageCallbackRouter, CompanionPageHandlerFactory, CompanionPageHandlerRemote} from './companion.mojom-webui.js'; |
| |
| let instance: CompanionProxy|null = null; |
| |
| export interface CompanionProxy { |
| callbackRouter: CompanionPageCallbackRouter; |
| handler: CompanionPageHandlerRemote; |
| } |
| |
| export class CompanionProxyImpl implements CompanionProxy { |
| callbackRouter: CompanionPageCallbackRouter; |
| handler: CompanionPageHandlerRemote; |
| |
| constructor() { |
| this.callbackRouter = new CompanionPageCallbackRouter(); |
| this.handler = new CompanionPageHandlerRemote(); |
| |
| // Use the CompanionPageHandlerFactory to create a connection to the page |
| // handler. |
| const factoryRemote = CompanionPageHandlerFactory.getRemote(); |
| factoryRemote.createCompanionPageHandler( |
| this.handler.$.bindNewPipeAndPassReceiver(), |
| this.callbackRouter.$.bindNewPipeAndPassRemote()); |
| } |
| |
| static getInstance() { |
| return instance || (instance = new CompanionProxyImpl()); |
| } |
| |
| static setInstance(obj: CompanionProxy) { |
| instance = obj; |
| } |
| } |