'use strict' import{ManagedConfigurationObserverRemote, ManagedConfigurationService, ManagedConfigurationServiceReceiver} from '/gen/third_party/blink/public/mojom/device/device.mojom.m.js'; self.ManagedConfigTest = (() => { // Class that mocks ManagedConfigurationService interface defined in // https://source.chromium.org/chromium/chromium/src/third_party/blink/public/mojom/device/device.mojom class MockManagedConfig { constructor() { this.receiver_ = new ManagedConfigurationServiceReceiver(this); this.interceptor_ = new MojoInterfaceInterceptor( ManagedConfigurationService.$interfaceName); this.interceptor_.oninterfacerequest = e => this.receiver_.$.bindHandle(e.handle); this.interceptor_.start(); this.subscription_ = null; this.reset(); } reset() { this.configuration_ = null; this.onObserverAdd_ = null; } async getManagedConfiguration(keys) { if (this.configuration_ === null) { return {}; } return { configurations: Object.keys(this.configuration_) .filter(key => keys.includes(key)) .reduce( (obj, key) => { obj[key] = JSON.stringify(this.configuration_[key]); return obj; }, {}) }; } subscribeToManagedConfiguration(remote) { this.subscription_ = remote; if (this.onObserverAdd_ !== null) { this.onObserverAdd_(); } } setManagedConfig(value) { this.configuration_ = value; if (this.subscription_ !== null) { this.subscription_.onConfigurationChanged(); } } } let testInternal = { initialized: false, mockManagedConfig: null } class ManagedConfigTestChromium { constructor() { Object.freeze(this); // Make it immutable. } initialize() { if (testInternal.mockManagedConfig !== null) { testInternal.mockManagedConfig.reset(); return; } testInternal.mockManagedConfig = new MockManagedConfig; testInternal.initialized = true; } setManagedConfig(config) { testInternal.mockManagedConfig.setManagedConfig(config); } async nextObserverAdded() { await new Promise(resolve => { testInternal.mockManagedConfig.onObserverAdd_ = resolve; }); } } return ManagedConfigTestChromium; })();