diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/fx/dragger_test.html')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/fx/dragger_test.html | 449 |
1 files changed, 0 insertions, 449 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/fx/dragger_test.html b/contexts/data/lib/closure-library/closure/goog/fx/dragger_test.html deleted file mode 100644 index f900e54..0000000 --- a/contexts/data/lib/closure-library/closure/goog/fx/dragger_test.html +++ /dev/null @@ -1,449 +0,0 @@ -<!DOCTYPE html> -<html> -<!-- -Copyright 2008 The Closure Library Authors. All Rights Reserved. - -Use of this source code is governed by the Apache License, Version 2.0. -See the COPYING file for details. ---> -<!-- ---> -<head> -<meta http-equiv="X-UA-Compatible" content="IE=edge"> -<title>Closure Unit Tests - goog.fx.Dragger</title> -<script src="../base.js"></script> -<script> - goog.require('goog.dom'); - goog.require('goog.events'); - goog.require('goog.events.BrowserEvent'); - goog.require('goog.events.BrowserEvent.MouseButton'); - goog.require('goog.events.Event'); - goog.require('goog.events.EventType'); - goog.require('goog.fx.Dragger'); - goog.require('goog.testing.events'); - goog.require('goog.testing.StrictMock'); - goog.require('goog.testing.jsunit'); -</script> -</head> -<body> - -<div id="sandbox"></div> - -<div id="sandbox_rtl" - dir="rtl" - style="overflow: auto; position:absolute; top:20px; left: 20px; - width: 100px; height: 100px; background: red;"></div> -<br/><br/><br/><br/><br/><br/><br/><br/> - -<script> - -var HAS_SET_CAPTURE = goog.fx.Dragger.HAS_SET_CAPTURE_; - -var target; -var targetRtl; - -function setUp() { - var sandbox = goog.dom.getElement('sandbox'); - target = goog.dom.createDom('div', { - 'id': 'target', - 'style': 'display:none;position:absolute;top:15px;left:10px' - }); - sandbox.appendChild(target); - sandbox.appendChild(goog.dom.createDom('div', {'id': 'handle'})); - - var sandboxRtl = goog.dom.getElement('sandbox_rtl'); - targetRtl = goog.dom.createDom('div', { - 'id': 'target_rtl', - 'style': 'position:absolute; top:15px; right:10px; width:10px; ' + - 'height: 10px; background: green;' - }); - sandboxRtl.appendChild(targetRtl); - sandboxRtl.appendChild(goog.dom.createDom('div', { - 'id': 'background_rtl', - 'style': 'width: 10000px;height:50px;position:absolute;color:blue;' - })); - sandboxRtl.appendChild(goog.dom.createDom('div', {'id': 'handle_rtl'})); -} - -function tearDown() { - goog.dom.getElement('sandbox').innerHTML = ''; - goog.dom.getElement('sandbox_rtl').innerHTML = ''; - goog.events.removeAll(); -} - -function testStartDrag() { - runStartDragTest('handle', target); -} - -function testStartDrag_rtl() { - runStartDragTest('handle_rtl', targetRtl); -} - -function runStartDragTest(handleId, targetElement) { - var dragger = new goog.fx.Dragger(targetElement, goog.dom.getElement(handleId)); - if (handleId == 'handle_rtl') { - dragger.enableRightPositioningForRtl(true); - } - var e = new goog.testing.StrictMock(goog.events.BrowserEvent); - e.type = goog.events.EventType.MOUSEDOWN; - e.clientX = 1; - e.clientY = 2; - e.isMouseActionButton().$returns(true); - e.preventDefault(); - e.isMouseActionButton().$returns(true); - e.preventDefault(); - e.$replay(); - - goog.events.listen(dragger, goog.fx.Dragger.EventType.START, function() { - targetElement.style.display = 'block'; - }); - - dragger.startDrag(e); - - assertTrue('Start drag with no hysteresis must actually start the drag.', - dragger.isDragging()); - if (handleId == 'handle_rtl') { - assertEquals(10, goog.style.bidi.getOffsetStart(targetElement)); - } - assertEquals('Dragger startX must match event\'s clientX.', - 1, dragger.startX); - assertEquals('Dragger clientX must match event\'s clientX', - 1, dragger.clientX); - assertEquals('Dragger startY must match event\'s clientY.', - 2, dragger.startY); - assertEquals('Dragger clientY must match event\'s clientY', - 2, dragger.clientY); - assertEquals('Dragger deltaX must match target\'s offsetLeft', - 10, dragger.deltaX); - assertEquals('Dragger deltaY must match target\'s offsetTop', - 15, dragger.deltaY); - - dragger = new goog.fx.Dragger(targetElement, goog.dom.getElement(handleId)); - dragger.setHysteresis(1); - dragger.startDrag(e); - assertFalse('Start drag with a valid non-zero hysteresis should not start ' + - 'the drag.', dragger.isDragging()); - e.$verify(); -} - -/** - * @bug 1381317 Cancelling start drag didn't end the attempt to drag. - */ -function testStartDrag_Cancel() { - var dragger = new goog.fx.Dragger(target); - - var e = new goog.testing.StrictMock(goog.events.BrowserEvent); - e.type = goog.events.EventType.MOUSEDOWN; - e.clientX = 1; - e.clientY = 2; - e.isMouseActionButton().$returns(true); - e.$replay(); - - goog.events.listen(dragger, goog.fx.Dragger.EventType.START, function(e) { - // Cancel drag. - e.preventDefault(); - }); - - dragger.startDrag(e); - - assertFalse('Start drag must have been cancelled.', - dragger.isDragging()); - assertFalse('Dragger must not have registered mousemove handlers.', - goog.events.hasListener(dragger.document_, - goog.events.EventType.MOUSEMOVE, !HAS_SET_CAPTURE)); - assertFalse('Dragger must not have registered mouseup handlers.', - goog.events.hasListener(dragger.document_, goog.events.EventType.MOUSEUP, - !HAS_SET_CAPTURE)); - e.$verify(); -} - -/** - * Tests that start drag happens on left mousedown. - */ -function testStartDrag_LeftMouseDownOnly() { - var dragger = new goog.fx.Dragger(target); - - var e = new goog.testing.StrictMock(goog.events.BrowserEvent); - e.type = goog.events.EventType.MOUSEDOWN; - e.clientX = 1; - e.clientY = 2; - e.isMouseActionButton().$returns(false); - e.$replay(); - - goog.events.listen(dragger, goog.fx.Dragger.EventType.START, function(e) { - fail("No drag START event should have been dispatched"); - }); - - dragger.startDrag(e); - - assertFalse('Start drag must have been cancelled.', - dragger.isDragging()); - assertFalse('Dragger must not have registered mousemove handlers.', - goog.events.hasListener(dragger.document_, - goog.events.EventType.MOUSEMOVE, true)); - assertFalse('Dragger must not have registered mouseup handlers.', - goog.events.hasListener(dragger.document_, goog.events.EventType.MOUSEUP, - true)); - e.$verify(); -} - -/** - * Tests that start drag happens on other event type than MOUSEDOWN. - */ -function testStartDrag_MouseMove() { - var dragger = new goog.fx.Dragger(target); - - var e = new goog.testing.StrictMock(goog.events.BrowserEvent); - e.type = goog.events.EventType.MOUSEMOVE; - e.clientX = 1; - e.clientY = 2; - e.preventDefault(); - e.$replay(); - - var startDragFired = false; - goog.events.listen(dragger, goog.fx.Dragger.EventType.START, function(e) { - startDragFired = true; - }); - - dragger.startDrag(e); - - assertTrue('Dragging should be in progress.', dragger.isDragging()); - assertTrue('Start drag event should have fired.', startDragFired); - assertTrue('Dragger must have registered mousemove handlers.', - goog.events.hasListener(dragger.document_, - goog.events.EventType.MOUSEMOVE, !HAS_SET_CAPTURE)); - assertTrue('Dragger must have registered mouseup handlers.', - goog.events.hasListener(dragger.document_, goog.events.EventType.MOUSEUP, - !HAS_SET_CAPTURE)); - e.$verify(); -} - -/** - * @bug 1381317 Cancelling start drag didn't end the attempt to drag. - */ -function testHandleMove_Cancel() { - var dragger = new goog.fx.Dragger(target); - dragger.setHysteresis(5); - - goog.events.listen(dragger, goog.fx.Dragger.EventType.START, function(e) { - // Cancel drag. - e.preventDefault(); - }); - - var e = new goog.testing.StrictMock(goog.events.BrowserEvent); - e.clientX = 1; - e.clientY = 2; - e.isMouseActionButton().$returns(true). - $anyTimes(); - e.preventDefault(); - e.$replay(); - dragger.startDrag(e); - assertFalse('Start drag must not start drag because of hysterisis.', - dragger.isDragging()); - assertTrue('Dragger must have registered mousemove handlers.', - goog.events.hasListener(dragger.document_, - goog.events.EventType.MOUSEMOVE, !HAS_SET_CAPTURE)); - assertTrue('Dragger must have registered mouseup handlers.', - goog.events.hasListener(dragger.document_, goog.events.EventType.MOUSEUP, - !HAS_SET_CAPTURE)); - - e.clientX = 10; - e.clientY = 10; - dragger.handleMove_(e); - assertFalse('Drag must be cancelled.', dragger.isDragging()); - assertFalse('Dragger must unregistered mousemove handlers.', - goog.events.hasListener(dragger.document_, - goog.events.EventType.MOUSEMOVE, true)); - assertFalse('Dragger must unregistered mouseup handlers.', - goog.events.hasListener(dragger.document_, goog.events.EventType.MOUSEUP, - true)); - e.$verify(); -} - -/** - * @bug 1714667 IE built in drag and drop handling stops dragging. - */ -function testIeDragStartCancelling() { - // Testing only IE. - if (!goog.userAgent.IE) { - return; - } - - // Built in 'dragstart' cancelling not enabled. - var dragger = new goog.fx.Dragger(target); - - var e = new goog.events.Event(goog.events.EventType.MOUSEDOWN); - e.clientX = 1; - e.clientY = 2; - e.button = 1; // IE only constant for left button. - var be = new goog.events.BrowserEvent(e); - dragger.startDrag(be); - assertTrue('The drag should have started.', dragger.isDragging()); - - e = new goog.events.Event(goog.events.EventType.DRAGSTART); - e.target = dragger.document_.documentElement; - assertTrue('The event should not be canceled.', - goog.testing.events.fireBrowserEvent(e)); - - dragger.dispose(); - - // Built in 'dragstart' cancelling enabled. - dragger = new goog.fx.Dragger(target); - dragger.setCancelIeDragStart(true); - - e = new goog.events.Event(goog.events.EventType.MOUSEDOWN); - e.clientX = 1; - e.clientY = 2; - e.button = 1; // IE only constant for left button. - be = new goog.events.BrowserEvent(e); - dragger.startDrag(be); - assertTrue('The drag should have started.', dragger.isDragging()); - - e = new goog.events.Event(goog.events.EventType.DRAGSTART); - e.target = dragger.document_.documentElement; - assertFalse('The event should be canceled.', - goog.testing.events.fireBrowserEvent(e)); - - dragger.dispose(); -} - - -/** @bug 1680770 */ -function testOnWindowMouseOut() { - // Test older Gecko browsers - FireFox 2. - if (goog.userAgent.GECKO && !goog.userAgent.isVersion('1.9a')) { - var dragger = new goog.fx.Dragger(target); - - var dragCanceled = false; - goog.events.listen(dragger, goog.fx.Dragger.EventType.END, function(e) { - dragCanceled = e.dragCanceled; - }); - - var e = new goog.testing.StrictMock(goog.events.BrowserEvent); - e.type = goog.events.EventType.MOUSEDOWN; - e.clientX = 1; - e.clientY = 2; - e.isMouseActionButton().$returns(true); - e.preventDefault(); - e.$replay(); - dragger.startDrag(e); - e.$verify(); - - assertTrue(dragger.isDragging()); - - e = new goog.events.BrowserEvent(); - e.type = goog.events.EventType.MOUSEOUT; - e.target = goog.dom.getElement('sandbox'); - e.currentTarget = window.top; - e.relatedTarget = target; - dragger.onWindowMouseOut_(e); - - assertFalse('Drag is not canceled for normal in-window mouseout.', - dragCanceled); - assertTrue('Must not stop dragging for normal in-window mouseout.', - dragger.isDragging()); - - dragCanceled = false; - delete e.relatedTarget; - e.target = goog.dom.createDom('iframe'); - dragger.onWindowMouseOut_(e); - assertFalse('Drag is not canceled for mousing into iframe.', - dragCanceled); - assertTrue('Must not stop dragging for mousing into iframe.', - dragger.isDragging()); - - dragCanceled = false; - e.target = target; - dragger.onWindowMouseOut_(e); - assertTrue('Drag is canceled for real mouse out of top window.', - dragCanceled); - assertFalse('Must stop dragging for real mouse out of top window.', - dragger.isDragging()); - } -} - -function testLimits() { - var dragger = new goog.fx.Dragger(target); - - assertEquals(100, dragger.limitX(100)); - assertEquals(100, dragger.limitY(100)); - - dragger.setLimits(new goog.math.Rect(10, 20, 30, 40)); - - assertEquals(10, dragger.limitX(0)); - assertEquals(40, dragger.limitX(100)); - assertEquals(20, dragger.limitY(0)); - assertEquals(60, dragger.limitY(100)); -} - -function testWindowBlur() { - if (!goog.fx.Dragger.HAS_SET_CAPTURE_) { - var dragger = new goog.fx.Dragger(target); - - var dragEnded = false; - goog.events.listen(dragger, goog.fx.Dragger.EventType.END, function(e) { - dragEnded = true; - }); - - var e = new goog.testing.StrictMock(goog.events.BrowserEvent); - e.type = goog.events.EventType.MOUSEDOWN; - e.clientX = 1; - e.clientY = 2; - e.isMouseActionButton().$returns(true); - e.preventDefault(); - e.$replay(); - dragger.startDrag(e); - e.$verify(); - - assertTrue(dragger.isDragging()); - - e = new goog.events.BrowserEvent(); - e.type = goog.events.EventType.BLUR; - e.target = window; - e.currentTarget = window; - goog.testing.events.fireBrowserEvent(e); - - assertTrue(dragEnded); - } -} - -function testBlur() { - if (!goog.fx.Dragger.HAS_SET_CAPTURE_) { - var dragger = new goog.fx.Dragger(target); - - var dragEnded = false; - goog.events.listen(dragger, goog.fx.Dragger.EventType.END, function(e) { - dragEnded = true; - }); - - var e = new goog.testing.StrictMock(goog.events.BrowserEvent); - e.type = goog.events.EventType.MOUSEDOWN; - e.clientX = 1; - e.clientY = 2; - e.isMouseActionButton().$returns(true); - e.preventDefault(); - e.$replay(); - dragger.startDrag(e); - e.$verify(); - - assertTrue(dragger.isDragging()); - - e = new goog.events.BrowserEvent(); - e.type = goog.events.EventType.BLUR; - e.target = document.body; - e.currentTarget = document.body; - // Blur events do not bubble but the test event system does not emulate that - // part so we add a capturing listener on the target and stops the - // propagation at the target, preventing any event from bubbling. - goog.events.listen(document.body, goog.events.EventType.BLUR, function(e) { - e.propagationStopped_ = true; - }, true); - goog.testing.events.fireBrowserEvent(e); - - assertFalse(dragEnded); - } -} - -</script> -</body> -</html> |