summaryrefslogtreecommitdiff
path: root/lib/dojo/robot.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dojo/robot.js')
-rw-r--r--lib/dojo/robot.js187
1 files changed, 0 insertions, 187 deletions
diff --git a/lib/dojo/robot.js b/lib/dojo/robot.js
deleted file mode 100644
index 40bc746ee..000000000
--- a/lib/dojo/robot.js
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dojo.robot"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.robot"] = true;
-dojo.provide("dojo.robot");
-dojo.require("doh.robot");
-dojo.require("dojo.window");
-
-
-dojo.experimental("dojo.robot");
-
-(function(){
-// users who use doh+dojo get the added convenience of dojo.mouseMoveAt,
-// instead of computing the absolute coordinates of their elements themselves
-dojo.mixin(doh.robot,{
-
- _resolveNode: function(/*String||DOMNode||Function*/ n){
- if(typeof n == "function"){
- // if the user passed a function returning a node, evaluate it
- n = n();
- }
- return n? dojo.byId(n) : null;
- },
-
- _scrollIntoView: function(/*Node*/ n){
- // scrolls the passed node into view, scrolling all ancester frames/windows as well.
- // Assumes parent iframes can be made fully visible given the current browser window size
- var d = dojo,
- dr = doh.robot,
- p = null;
- d.forEach(dr._getWindowChain(n), function(w){
- d.withGlobal(w, function(){
- // get the position of the node wrt its parent window
- // if it is a parent frame, its padding and border extents will get added in
- var p2 = d.position(n, false),
- b = d._getPadBorderExtents(n),
- oldp = null;
- // if p2 is the position of the original passed node, store the position away as p
- // otherwise, node is actually an iframe. in this case, add the iframe's position wrt its parent window and also the iframe's padding and border extents
- if(!p){
- p = p2;
- }else{
- oldp = p;
- p = {x: p.x+p2.x+b.l,
- y: p.y+p2.y+b.t,
- w: p.w,
- h: p.h};
-
- }
- // scroll the parent window so that the node translated into the parent window's coordinate space is in view
- dojo.window.scrollIntoView(n,p);
- // adjust position for the new scroll offsets
- p2 = d.position(n, false);
- if(!oldp){
- p = p2;
- }else{
- p = {x: oldp.x+p2.x+b.l,
- y: oldp.y+p2.y+b.t,
- w: p.w,
- h: p.h};
- }
- // get the parent iframe so it can be scrolled too
- n = w.frameElement;
- });
- });
- },
-
- _position: function(/*Node*/ n){
- // Returns the dojo.position of the passed node wrt the passed window's viewport,
- // following any parent iframes containing the node and clipping the node to each iframe.
- // precondition: _scrollIntoView already called
- var d = dojo, p = null, M = Math.max, m = Math.min;
- // p: the returned position of the node
- d.forEach(doh.robot._getWindowChain(n), function(w){
- d.withGlobal(w, function(){
- // get the position of the node wrt its parent window
- // if it is a parent frame, its padding and border extents will get added in
- var p2 = d.position(n, false), b = d._getPadBorderExtents(n);
- // if p2 is the position of the original passed node, store the position away as p
- // otherwise, node is actually an iframe. in this case, add the iframe's position wrt its parent window and also the iframe's padding and border extents
- if(!p){
- p = p2;
- }else{
- var view;
- d.withGlobal(n.contentWindow,function(){
- view=dojo.window.getBox();
- });
- p2.r = p2.x+view.w;
- p2.b = p2.y+view.h;
- p = {x: M(p.x+p2.x,p2.x)+b.l, // clip left edge of node wrt the iframe
- y: M(p.y+p2.y,p2.y)+b.t, // top edge
- r: m(p.x+p2.x+p.w,p2.r)+b.l, // right edge (to compute width)
- b: m(p.y+p2.y+p.h,p2.b)+b.t}; // bottom edge (to compute height)
- // save a few bytes by computing width and height from r and b
- p.w = p.r-p.x;
- p.h = p.b-p.y;
- }
- // the new node is now the old node's parent iframe
- n=w.frameElement;
- });
- });
- return p;
- },
-
- _getWindowChain : function(/*Node*/ n){
- // Returns an array of windows starting from the passed node's parent window and ending at dojo's window
- var cW = dojo.window.get(n.ownerDocument);
- var arr=[cW];
- var f = cW.frameElement;
- return (cW == dojo.global || f == null)? arr : arr.concat(doh.robot._getWindowChain(f));
- },
-
- scrollIntoView : function(/*String||DOMNode||Function*/ node, /*Number, optional*/ delay){
- // summary:
- // Scroll the passed node into view, if it is not.
- //
- // node:
- // The id of the node, or the node itself, to move the mouse to.
- // If you pass an id or a function that returns a node, the node will not be evaluated until the movement executes.
- // This is useful if you need to move the mouse to an node that is not yet present.
- //
- // delay:
- // Delay, in milliseconds, to wait before firing.
- // The delay is a delta with respect to the previous automation call.
- //
- doh.robot.sequence(function(){
- doh.robot._scrollIntoView(doh.robot._resolveNode(node));
- }, delay);
- },
-
- mouseMoveAt : function(/*String||DOMNode||Function*/ node, /*Integer, optional*/ delay, /*Integer, optional*/ duration, /*Number, optional*/ offsetX, /*Number, optional*/ offsetY){
- // summary:
- // Moves the mouse over the specified node at the specified relative x,y offset.
- //
- // description:
- // Moves the mouse over the specified node at the specified relative x,y offset.
- // If you do not specify an offset, mouseMove will default to move to the middle of the node.
- // Example: to move the mouse over a ComboBox's down arrow node, call doh.mouseMoveAt(dijit.byId('setvaluetest').downArrowNode);
- //
- // node:
- // The id of the node, or the node itself, to move the mouse to.
- // If you pass an id or a function that returns a node, the node will not be evaluated until the movement executes.
- // This is useful if you need to move the mouse to an node that is not yet present.
- //
- // delay:
- // Delay, in milliseconds, to wait before firing.
- // The delay is a delta with respect to the previous automation call.
- // For example, the following code ends after 600ms:
- // doh.robot.mouseClick({left:true}, 100) // first call; wait 100ms
- // doh.robot.typeKeys("dij", 500) // 500ms AFTER previous call; 600ms in all
- //
- // duration:
- // Approximate time Robot will spend moving the mouse
- // The default is 100ms.
- //
- // offsetX:
- // x offset relative to the node, in pixels, to move the mouse. The default is half the node's width.
- //
- // offsetY:
- // y offset relative to the node, in pixels, to move the mouse. The default is half the node's height.
- //
-
- doh.robot._assertRobot();
- duration = duration||100;
- this.sequence(function(){
- node=doh.robot._resolveNode(node);
- doh.robot._scrollIntoView(node);
- var pos = doh.robot._position(node);
- if(offsetY === undefined){
- offsetX=pos.w/2;
- offsetY=pos.h/2;
- }
- var x = pos.x+offsetX;
- var y = pos.y+offsetY;
- doh.robot._mouseMove(x, y, false, duration);
- }, delay, duration);
- }
-});
-
-})();
-
-}