| // Create a credentialless iframe. The new document will execute any scripts |
| // sent toward the token it returns. |
| const newIframeCredentialless = (child_origin, opt_headers) => { |
| opt_headers ||= ""; |
| const sub_document_token = token(); |
| let iframe = document.createElement('iframe'); |
| iframe.src = child_origin + executor_path + opt_headers + |
| `&uuid=${sub_document_token}`; |
| iframe.credentialless = true; |
| document.body.appendChild(iframe); |
| return sub_document_token; |
| }; |
| |
| // Create a normal iframe. The new document will execute any scripts sent |
| // toward the token it returns. |
| const newIframe = (child_origin) => { |
| const sub_document_token = token(); |
| let iframe = document.createElement('iframe'); |
| iframe.src = child_origin + executor_path + `&uuid=${sub_document_token}`; |
| iframe.credentialless = false |
| document.body.appendChild(iframe); |
| return sub_document_token; |
| }; |
| |
| // Create a popup. The new document will execute any scripts sent toward the |
| // token it returns. |
| const newPopup = (test, origin) => { |
| const popup_token = token(); |
| const popup = window.open(origin + executor_path + `&uuid=${popup_token}`); |
| test.add_cleanup(() => popup.close()); |
| return popup_token; |
| } |
| |
| // Create a fenced frame. The new document will execute any scripts sent |
| // toward the token it returns. |
| const newFencedFrame = (child_origin) => { |
| const support_loading_mode_fenced_frame = |
| "|header(Supports-Loading-Mode,fenced-frame)"; |
| const sub_document_token = token(); |
| const fencedframe = document.createElement('fencedframe'); |
| const url = child_origin + executor_path + |
| support_loading_mode_fenced_frame + |
| `&uuid=${sub_document_token}`; |
| fencedframe.config = new FencedFrameConfig(url); |
| document.body.appendChild(fencedframe); |
| return sub_document_token; |
| }; |
| |
| const importScript = (url) => { |
| const script = document.createElement("script"); |
| script.type = "text/javascript"; |
| script.src = url; |
| const loaded = new Promise(resolve => script.onload = resolve); |
| document.body.appendChild(script); |
| return loaded; |
| } |