UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

155 lines (121 loc) 4.59 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2007-2008 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Alexander Steitz (aback) ************************************************************************ */ qx.Class.define("qx.test.ui.embed.Iframe", { extend: qx.test.ui.LayoutTestCase, members: { __iframe: null, setUp() { this.__iframe = new qx.ui.embed.Iframe(); this.__iframe.set({ width: 200, height: 500 }); }, tearDown() { this.__iframe.destroy(); }, testHiddenSetSourceInitial() { this.__iframe.set({ visibility: "hidden" }); this.getRoot().add(this.__iframe); qx.ui.core.queue.Manager.flush(); this.assertNotNull(this.__iframe.getContentElement().getDomElement()); }, testHiddenSetSource() { this.getRoot().add(this.__iframe); qx.ui.core.queue.Manager.flush(); this.__iframe.hide(); qx.ui.core.queue.Manager.flush(); var src = qx.util.ResourceManager.getInstance().toUri( "qx/static/blank.html" ); src = qx.util.Uri.getAbsolute(src); this.__iframe.setSource(src); qx.ui.core.queue.Manager.flush(); this.__iframe.addListenerOnce("load", () => { this.resume(function () { this.assertEquals( this.__iframe.getSource(), this.__iframe.getWindow().location.href ); }); }); this.wait(10000); }, testGetWindow() { this.getRoot().add(this.__iframe); this.__iframe.addListener("load", () => { this.resume(function () { this.assertNotNull(this.__iframe.getWindow()); }, this); }); var src = qx.util.ResourceManager.getInstance().toUri( "qx/static/blank.html" ); this.__iframe.setSource(src); this.wait(10000); }, /** @ignore(require) */ testSyncSourceAfterDOMMove() { // This breaks (very) frequently when run under headless chrome on Travis; we can't // track down the cause and it works just fine elsewhere. Disabling this test on // Chrome is an effective quick hack until someone can figure it out. if (qx.core.Environment.get("browser.name") == "chrome") { this.skip( "Optimization makes this test fail frequently for chrome - skipping" ); } // This also breaks on MacOS runners on GitHub with webkit try { let CI = require("process").env.CI; if (CI && qx.core.Environment.get("browser.name") === "webkit") { this.skip("Skipping for Webkit for MacOS"); } } catch (e) {} // not on GitHub var rm = qx.util.ResourceManager.getInstance(); var src1 = rm.toUri("qx/static/blank.html"); // <body></body> var src2 = rm.toUri("qx/test/hello.html"); // <body>Hello World!</body> var iframe = this.__iframe; var container0 = new qx.ui.container.Composite(new qx.ui.layout.VBox()); var container1 = new qx.ui.container.Composite(new qx.ui.layout.VBox()); var container2 = new qx.ui.container.Composite(new qx.ui.layout.VBox()); container0.add(container1, { flex: 1 }); container0.add(container2, { flex: 1 }); this.getRoot().add(container0); iframe.setSource(src1); // "qx/static/blank.html" container1.add(iframe, { flex: 1 }); // Move iframe to another DOM location after half a second window.setTimeout(function () { iframe.setSource(src2); // "qx/test/hello.html" container2.add(iframe, { flex: 1 }); }, 500); // Check iframe body content after one second window.setTimeout( function () { this.resume(function () { var innerText = iframe.getWindow().document.body.innerText; // IE and edge deliver an extra blank at the end of // body.innerText if ( typeof innerText == "string" && (qx.core.Environment.get("browser.name") == "edge" || qx.core.Environment.get("browser.name") == "ie") ) { innerText = innerText.replace(/\s$/gm, ""); } this.assertEquals("Hello World!", innerText); }); }.bind(this), 5000 ); this.wait(10000); } } });