'use strict'; // These tests rely on the User Agent providing an implementation of // Managed Configuration API // (https://wicg.github.io/WebApiDevice/managed_config). // // In Chromium-based browsers this implementation is provided by a polyfill // in order to reduce the amount of test-only code shipped to users. To enable // these tests the browser must be run with these options: // // --enable-blink-features=MojoJS,MojoJSTest let fakeManagedConfigurationService = undefined; async function loadChromiumResources() { await import('/resources/chromium/mock-managed-config.js'); } // User Agents must provide their own implementation of `ManagedConfigTest`, // which must contain the following this interface: // class ManagedConfigTest { // /** Replaces the provided managed config with the given one. */ // /** @param {?Object} config */ // setManagedConfig(config); // /** Asynchronously waits for a new observer to be added */ // waitTillObserverAdded(); // } async function createManagedConfigTest() { if (typeof ManagedConfigTest === 'undefined') { if (isChromiumBased) { await loadChromiumResources(); } } assert_implements(ManagedConfigTest, 'ManagedConfigTest is unavailable.'); if (fakeManagedConfigurationService !== undefined) { await fakeManagedConfigurationService.initialize(); return fakeManagedConfigurationService; } let managedConfigTest = new ManagedConfigTest(); await managedConfigTest.initialize(); fakeManagedConfigurationService = managedConfigTest; return managedConfigTest; } function managed_config_test(func, description) { promise_test(async test => { const managedConfigTest = await createManagedConfigTest(); await func(test, managedConfigTest); }, description); }