Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,214 @@
|
||||
// Copyright 2008 The Closure Library Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS-IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
goog.provide('goog.ui.IframeMaskTest');
|
||||
goog.setTestOnly('goog.ui.IframeMaskTest');
|
||||
|
||||
goog.require('goog.dom');
|
||||
goog.require('goog.dom.TagName');
|
||||
goog.require('goog.dom.iframe');
|
||||
goog.require('goog.structs.Pool');
|
||||
goog.require('goog.style');
|
||||
goog.require('goog.testing.MockClock');
|
||||
goog.require('goog.testing.StrictMock');
|
||||
goog.require('goog.testing.jsunit');
|
||||
goog.require('goog.ui.IframeMask');
|
||||
goog.require('goog.ui.Popup');
|
||||
goog.require('goog.ui.PopupBase');
|
||||
goog.require('goog.userAgent');
|
||||
|
||||
var iframeMask;
|
||||
var mockClock;
|
||||
|
||||
function setUp() {
|
||||
goog.dom.getElement('sandbox').innerHTML = '<div id="popup"></div>';
|
||||
mockClock = new goog.testing.MockClock(true);
|
||||
|
||||
iframeMask = new goog.ui.IframeMask();
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
iframeMask.dispose();
|
||||
mockClock.dispose();
|
||||
|
||||
assertNoIframes();
|
||||
}
|
||||
|
||||
function findOneAndOnlyIframe() {
|
||||
var iframes = document.getElementsByTagName(goog.dom.TagName.IFRAME);
|
||||
assertEquals('There should be exactly 1 iframe in the document',
|
||||
1, iframes.length);
|
||||
return iframes[0];
|
||||
}
|
||||
|
||||
function assertNoIframes() {
|
||||
assertEquals('Expected no iframes in the document', 0,
|
||||
goog.dom.getElementsByTagNameAndClass(goog.dom.TagName.IFRAME).length);
|
||||
}
|
||||
|
||||
function testApplyFullScreenMask() {
|
||||
iframeMask.applyMask();
|
||||
|
||||
var iframe = findOneAndOnlyIframe();
|
||||
assertEquals('block', iframe.style.display);
|
||||
assertEquals('absolute', iframe.style.position);
|
||||
|
||||
// coerce zindex to a string
|
||||
assertEquals('1', iframe.style.zIndex + '');
|
||||
|
||||
iframeMask.hideMask();
|
||||
assertEquals('none', iframe.style.display);
|
||||
}
|
||||
|
||||
function testApplyOpacity() {
|
||||
iframeMask.setOpacity(0.3);
|
||||
iframeMask.applyMask();
|
||||
|
||||
if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9)) {
|
||||
assertContains('Expected opactity to be set in the CSS style',
|
||||
'30', findOneAndOnlyIframe().style.cssText);
|
||||
} else {
|
||||
assertContains('Expected opactity to be set in the CSS style',
|
||||
'0.3', findOneAndOnlyIframe().style.cssText);
|
||||
}
|
||||
}
|
||||
|
||||
function testApplyZIndex() {
|
||||
iframeMask.setZIndex(5);
|
||||
iframeMask.applyMask();
|
||||
|
||||
// coerce zindex to a string
|
||||
assertEquals('5', findOneAndOnlyIframe().style.zIndex + '');
|
||||
}
|
||||
|
||||
function testSnapElement() {
|
||||
iframeMask.setSnapElement(goog.dom.getElement('popup'));
|
||||
iframeMask.applyMask();
|
||||
|
||||
var iframe = findOneAndOnlyIframe();
|
||||
var bounds = goog.style.getBounds(iframe);
|
||||
assertEquals(100, bounds.left);
|
||||
assertEquals(900, bounds.top);
|
||||
assertEquals(300, bounds.width);
|
||||
assertEquals(400, bounds.height);
|
||||
|
||||
iframeMask.setSnapElement(document.documentElement);
|
||||
|
||||
// Make sure that snapping to a different element changes the bounds.
|
||||
assertNotEquals('Snap element not updated',
|
||||
400, goog.style.getBounds(iframe).height);
|
||||
}
|
||||
|
||||
function testAttachToPopup() {
|
||||
var popup = new goog.ui.Popup(goog.dom.getElement('popup'));
|
||||
iframeMask.listenOnTarget(popup, goog.ui.PopupBase.EventType.SHOW,
|
||||
goog.ui.PopupBase.EventType.HIDE, goog.dom.getElement('popup'));
|
||||
|
||||
assertNoIframes();
|
||||
popup.setVisible(true);
|
||||
assertNoIframes();
|
||||
|
||||
// Tick because the showing of the iframe mask happens asynchronously.
|
||||
// (Otherwise the handling of the mousedown can take so long that a bounce
|
||||
// occurs).
|
||||
mockClock.tick(1);
|
||||
|
||||
var iframe = findOneAndOnlyIframe();
|
||||
var bounds = goog.style.getBounds(iframe);
|
||||
assertEquals(300, bounds.width);
|
||||
assertEquals(400, bounds.height);
|
||||
assertEquals('block', iframe.style.display);
|
||||
|
||||
popup.setVisible(false);
|
||||
assertEquals('none', iframe.style.display);
|
||||
}
|
||||
|
||||
function testQuickHidingPopup() {
|
||||
var popup = new goog.ui.Popup(goog.dom.getElement('popup'));
|
||||
iframeMask.listenOnTarget(popup, goog.ui.PopupBase.EventType.SHOW,
|
||||
goog.ui.PopupBase.EventType.HIDE);
|
||||
|
||||
assertNoIframes();
|
||||
popup.setVisible(true);
|
||||
assertNoIframes();
|
||||
popup.setVisible(false);
|
||||
assertNoIframes();
|
||||
|
||||
// Tick because the showing of the iframe mask happens asynchronously.
|
||||
// (Otherwise the handling of the mousedown can take so long that a bounce
|
||||
// occurs).
|
||||
mockClock.tick(1);
|
||||
assertNoIframes();
|
||||
}
|
||||
|
||||
function testRemoveHandlers() {
|
||||
var popup = new goog.ui.Popup(goog.dom.getElement('popup'));
|
||||
iframeMask.listenOnTarget(popup, goog.ui.PopupBase.EventType.SHOW,
|
||||
goog.ui.PopupBase.EventType.HIDE);
|
||||
iframeMask.removeHandlers();
|
||||
popup.setVisible(true);
|
||||
|
||||
// Tick because the showing of the iframe mask happens asynchronously.
|
||||
// (Otherwise the handling of the mousedown can take so long that a bounce
|
||||
// occurs).
|
||||
mockClock.tick(1);
|
||||
assertNoIframes();
|
||||
}
|
||||
|
||||
function testIframePool() {
|
||||
var iframe = goog.dom.iframe.createBlank(goog.dom.getDomHelper());
|
||||
var mockPool = new goog.testing.StrictMock(goog.structs.Pool);
|
||||
mockPool.getObject();
|
||||
mockPool.$returns(iframe);
|
||||
|
||||
mockPool.$replay();
|
||||
|
||||
iframeMask.dispose();
|
||||
|
||||
// Create a new iframe mask with a pool, and verify that it checks
|
||||
// its iframe out of the pool instead of creating one.
|
||||
iframeMask = new goog.ui.IframeMask(null, mockPool);
|
||||
iframeMask.applyMask();
|
||||
mockPool.$verify();
|
||||
findOneAndOnlyIframe();
|
||||
|
||||
mockPool.$reset();
|
||||
|
||||
mockPool.releaseObject(iframe);
|
||||
mockPool.$replay();
|
||||
|
||||
// When the iframe mask has a pool, the pool is responsible for
|
||||
// removing the iframe from the DOM.
|
||||
iframeMask.hideMask();
|
||||
mockPool.$verify();
|
||||
findOneAndOnlyIframe();
|
||||
|
||||
// And showing the iframe again should check it out of the pool again.
|
||||
mockPool.$reset();
|
||||
mockPool.getObject();
|
||||
mockPool.$returns(iframe);
|
||||
mockPool.$replay();
|
||||
|
||||
iframeMask.applyMask();
|
||||
mockPool.$verify();
|
||||
|
||||
// When the test is over, the iframe mask should be disposed. Make sure
|
||||
// that the pool removes the iframe from the page.
|
||||
mockPool.$reset();
|
||||
mockPool.releaseObject(iframe);
|
||||
mockPool.$does(function() {
|
||||
goog.dom.removeNode(iframe);
|
||||
});
|
||||
mockPool.$replay();
|
||||
}
|
||||
Reference in New Issue
Block a user