blob: 4f0f2c00ed36cc2f74fe2846964ab19067c83d3c [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// clang-format off
// #import 'chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js';
// #import 'chrome://resources/mojo/mojo/public/mojom/base/unguessable_token.mojom-lite.js';
// #import {addSingletonGetter} from 'chrome://resources/js/cr.m.js';
// #import '/mojo/nearby_share_target_types.mojom-lite.js';
// #import '/mojo/nearby_share.mojom-lite.js';
// #import '/mojo/nearby_share_settings.mojom-lite.js';
// clang-format on
cr.define('nearby_share', function() {
/** @type {?nearbyShare.mojom.ReceiveManagerInterface} */
let receiveManager = null;
/** @type {boolean} */
let isTesting = false;
/**
* @param {!nearbyShare.mojom.ReceiveManagerInterface}
* testReceiveManager A test receiveManager impl.
*/
/* #export */ function setReceiveManagerForTesting(testReceiveManager) {
receiveManager = testReceiveManager;
isTesting = true;
}
/**
* @return {!nearbyShare.mojom.ReceiveManagerInterface}
* the receiveManager interface
*/
/* #export */ function getReceiveManager() {
if (!receiveManager) {
receiveManager = nearbyShare.mojom.ReceiveManager.getRemote();
}
return receiveManager;
}
/**
* @param {!nearbyShare.mojom.ReceiveObserverInterface} observer
* @return {?nearbyShare.mojom.ReceiveObserverReceiver} The mojo
* receiver or null when testing.
*/
/* #export */ function observeReceiveManager(observer) {
if (isTesting) {
getReceiveManager().addReceiveObserver(
/** @type {!nearbyShare.mojom.ReceiveObserverRemote} */ (observer));
return null;
}
const receiver = new nearbyShare.mojom.ReceiveObserverReceiver(observer);
getReceiveManager().addReceiveObserver(
receiver.$.bindNewPipeAndPassRemote());
return receiver;
}
// #cr_define_end
return {
setReceiveManagerForTesting,
getReceiveManager,
observeReceiveManager,
};
});