UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

198 lines (143 loc) 6.42 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.bom.Blocker", { extend : qx.dev.unit.TestCase, members : { setUp : function() { this.__blocker = new qx.bom.Blocker(); this.__blocker.setBlockerZIndex(199); this.__blockedElement = qx.dom.Element.create("div"); qx.bom.element.Style.setStyles(this.__blockedElement, { position: "absolute", top: "100px", left: "100px", width: "500px", height: "400px", zIndex: 200 }); qx.dom.Element.insertBegin(this.__blockedElement, document.body); }, tearDown : function() { this.__blocker.unblock(); this.__blocker.dispose(); this.__blocker = null; qx.dom.Element.remove(this.__blockedElement); }, testBlockWholeDocument : function() { this.__blocker.block(); var blockerElement = this.__blocker.getBlockerElement(); this.assertNotNull(blockerElement, "Blocker element not inserted."); this.assertEquals(qx.bom.Document.getWidth(), qx.bom.element.Dimension.getWidth(blockerElement)); this.assertEquals(qx.bom.Document.getHeight(), qx.bom.element.Dimension.getHeight(blockerElement)); if ((qx.core.Environment.get("engine.name") == "mshtml")) { var childElements = qx.dom.Hierarchy.getChildElements(document.body); var blockerIframeElement = childElements[childElements.length - 1]; this.assertNotNull(blockerIframeElement, "Blocker iframe element not inserted"); this.assertEquals(qx.bom.Document.getWidth(), qx.bom.element.Dimension.getWidth(blockerIframeElement)); this.assertEquals(qx.bom.Document.getHeight(), qx.bom.element.Dimension.getHeight(blockerIframeElement)); } this.__blocker.unblock(); }, testUnblockWholeDocument : function() { this.__blocker.block(); if ((qx.core.Environment.get("engine.name") == "mshtml")) { var childElements = qx.dom.Hierarchy.getChildElements(document.body); var blockerIframeElement = childElements[childElements.length - 1]; } this.__blocker.unblock(); var blockerElement = this.__blocker.getBlockerElement(); this.assertFalse(qx.dom.Element.isInDom(blockerElement, window), "Blocker element not correctly removed"); if ((qx.core.Environment.get("engine.name") == "mshtml")) { this.assertFalse(qx.dom.Element.isInDom(blockerIframeElement, window), "Blocker iframe element not correctly removed"); } }, testBlockElement : function() { this.__blocker.block(this.__blockedElement); // Timer is needed for IE6, otherwise the test will fail because IE6 // is not able to resize the blockerElement fast enough qx.event.Timer.once(function() { var self = this; this.resume(function() { var blockerElement = self.__blocker.getBlockerElement(); self.assertNotNull(blockerElement, "Blocker element not inserted."); self.assertEquals(qx.bom.element.Dimension.getWidth(self.__blockedElement), qx.bom.element.Dimension.getWidth(blockerElement)); self.assertEquals(qx.bom.element.Dimension.getHeight(self.__blockedElement), qx.bom.element.Dimension.getHeight(blockerElement)); self.assertEquals(qx.bom.element.Location.getLeft(self.__blockedElement), qx.bom.element.Location.getLeft(blockerElement)); self.assertEquals(qx.bom.element.Location.getTop(self.__blockedElement), qx.bom.element.Location.getTop(blockerElement)); self.assertEquals(qx.bom.element.Style.get(self.__blockedElement, "zIndex") - 1, qx.bom.element.Style.get(blockerElement, "zIndex")); if ((qx.core.Environment.get("engine.name") == "mshtml")) { var childElements = qx.dom.Hierarchy.getChildElements(document.body); var blockerIframeElement = childElements[childElements.length - 1]; self.assertEquals(qx.bom.element.Style.get(self.__blockedElement, "zIndex") - 2, qx.bom.element.Style.get(blockerIframeElement, "zIndex")); } self.__blocker.unblock(); }, self); }, this, 1000); this.wait(); }, testBlockerColor : function() { this.__blocker.setBlockerColor("#FF0000"); this.__blocker.block(); var blockerElement = this.__blocker.getBlockerElement(); var color = qx.bom.element.Style.get(blockerElement, "backgroundColor"); if (qx.util.ColorUtil.isRgbString(color)) { this.assertEquals("rgb(255, 0, 0)", color); } else { this.assertEquals("#ff0000", color); } this.__blocker.unblock(); }, testBlockerOpacity : function() { this.__blocker.setBlockerOpacity(0.7); this.__blocker.block(); var blockerElement = this.__blocker.getBlockerElement(); var value = qx.bom.element.Opacity.get(blockerElement); if (qx.core.Environment.get("engine.name") == "webkit") { value = Math.round(value * 10) / 10; } this.assertEquals(0.7, value); this.__blocker.unblock(); }, testDoubleBlocking : function() { var before = qx.dom.Hierarchy.getDescendants(document.body); this.__blocker.block(this.__blockedElement); this.__blocker.block(this.__blockedElement); var after = qx.dom.Hierarchy.getDescendants(document.body); if ((qx.core.Environment.get("engine.name") == "mshtml")) { this.assertEquals(after.length, before.length + 2); } else { this.assertEquals(after.length, before.length + 1); } this.__blocker.unblock(); }, testDoubleUnBlocking : function() { this.__blocker.block(this.__blockedElement); this.__blocker.unblock(); this.__blocker.unblock(); var blockerElement = this.__blocker.getBlockerElement(); this.assertNotEquals(blockerElement.parentNode, this.__blockedElement); } } });