Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / fast / spatial-navigation / resources / spatial-navigation-utils.js
blob161354d92b9f8d4be688d28a0052d49185596823
1 /*
2  * Original author: Doug Turner <doug.turner@gmail.com>
3  *
4  * Contributors:
5  *     * Antonio Gomes <tonikitoo@webkit.org>
6  **/
8 var gExpectedResults = 0;
9 var gIndex = 0;
10 var gClosureCallback = null;
11 var gFocusedDocument = 0;
13 function initTest(table, completedCb) {
15   gExpectedResults = table;
16   gIndex = 0;
17   gClosureCallback = completedCb;
18   gFocusedDocument = 0;
20   prepareMove();
23 function prepareMove()
25   // When a table has with "DONE", call the completion callback and end the moves.
26   if (gExpectedResults[gIndex][0] == "DONE")
27     if (gClosureCallback) {
28       gClosureCallback();
29       return;
30     }
32   // When a table has an "", just end the moves.
33   if (gExpectedResults[gIndex][0] == "")
34     return;
36   doMove();
39 function doMove()
41   var direction;
43   switch (gExpectedResults[gIndex][0]) {
44   case "Up":
45     direction = "upArrow";
46     break;
47   case "Right":
48     direction = "rightArrow";
49     break;
50   case "Down":
51     direction = "downArrow";
52     break;
53   case "Left":
54     direction = "leftArrow";
55     break;
56   case "Space":
57     direction = " ";
58     break;
59   default:
60     debug("Action [" + gExpectedResults[gIndex][0] + "] not supported.");
61   }
63   if (window.testRunner && direction)
64     eventSender.keyDown(direction);
66   setTimeout(verifyAndAdvance, 15);
69 function verifyAndAdvance()
71   var direction = gExpectedResults[gIndex][0];
72   var expectedID = gExpectedResults[gIndex][1];
74   gFocusedDocument = document;
75   findFocusedDocument(document);
77   var i = 0;
78   var mainFrameHasFocus = true;
79   for ( ; i < window.frames.length; i++) {
80     if (window.frames[i].document.hasFocus()) {
81       mainFrameHasFocus = false;
82       break;
83     }
84   }
86   shouldBeEqualToString("gFocusedDocument.activeElement.getAttribute(\"id\")", expectedID);
88   gIndex++;
89   prepareMove();
92 function findFocusedDocument(currentDocument)
94   var i = 0;
95   for ( ; i < currentDocument.defaultView.frames.length; i++) {
96     findFocusedDocument(currentDocument.defaultView.frames[i].document);
97     if (gFocusedDocument != document)
98       return;
99   }
101   if (currentDocument.hasFocus()) {
102     gFocusedDocument = currentDocument;
103     return;
104   }