diff options
Diffstat (limited to 'tests/wpt/web-platform-tests/resources/chromium/mock-screenenumeration.js')
-rw-r--r-- | tests/wpt/web-platform-tests/resources/chromium/mock-screenenumeration.js | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-screenenumeration.js b/tests/wpt/web-platform-tests/resources/chromium/mock-screenenumeration.js new file mode 100644 index 00000000000..0f71db8f506 --- /dev/null +++ b/tests/wpt/web-platform-tests/resources/chromium/mock-screenenumeration.js @@ -0,0 +1,82 @@ +'use strict' + +var ScreenEnumerationTest = (() => { + + class MockScreenEnumeration { + constructor() { + this.bindingSet_ = new mojo.BindingSet(blink.mojom.ScreenEnumeration); + this.interceptor_ = new MojoInterfaceInterceptor(blink.mojom.ScreenEnumeration.name); + this.interceptor_.oninterfacerequest = e => { + this.bindingSet_.addBinding(this, e.handle); + } + this.reset(); + this.interceptor_.start(); + } + + reset() { + this.displays_ = []; + this.internalId_ = 0; + this.primaryId_ = 0; + this.success_ = false; + } + + setIds(internalId, primaryId) { + this.internalId_ = internalId; + this.primaryId_ = primaryId; + } + + setSuccess(success) { + this.success_ = success; + } + + addDisplay(display) { + this.displays_.push(display); + } + + async getDisplays() { + return Promise.resolve({ + displays: this.displays_, + internalId: this.internalId_, + primaryId: this.primaryId_, + success: this.success_, + }); + } + } + + let testInternal = { + initialized: false, + mockScreenEnumeration: null + } + + class ScreenEnumerationTestChromium { + constructor() { + Object.freeze(this); // Makes it immutable. + } + + async initialize() { + if (testInternal.initialized) + throw new Error('Call reset() before initialize().'); + + if (testInternal.mockScreenEnumeration == null) + testInternal.mockScreenEnumeration = new MockScreenEnumeration(); + testInternal.initialized = true; + } + + async reset() { + if (!testInternal.initialized) + throw new Error('Call initialize() before reset().'); + testInternal.mockScreenEnumeration.reset(); + testInternal.initialized = false; + + // Wait for an event loop iteration to let any pending mojo commands + // to finish. + await new Promise(resolve => setTimeout(resolve, 0)); + } + + getMockScreenEnumeration() { + return testInternal.mockScreenEnumeration; + } + } + + return ScreenEnumerationTestChromium; +})(); |