| // META: script=/resources/WebIDLParser.js |
| // META: script=/resources/idlharness.js |
| |
| async_test(function() { |
| const srcs = ['requestidlecallback', 'html', 'dom']; |
| Promise.all(srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))) |
| .then(([idl, html, dom]) => { |
| var idl_array = new IdlArray(); |
| idl_array.add_idls(idl); |
| idl_array.add_dependency_idls(html); |
| idl_array.add_dependency_idls(dom); |
| idl_array.add_objects({Window: ['window']}); |
| |
| let deadline; |
| const execIDLTest = this.step_func_done(function() { |
| idl_array.add_objects({IdleDeadline: [deadline]}); |
| idl_array.test(); |
| }); |
| |
| if (!window.requestIdleCallback) { |
| execIDLTest(); |
| } else { |
| const callback = this.step_func(d => { |
| deadline = d; |
| execIDLTest(); |
| }); |
| requestIdleCallback(callback, { timeout: 100 }); |
| } |
| }); |
| }, 'IdleDeadline object setup'); |