Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(194)

Side by Side Diff: chrome/test/functional/quasar/jsutils.js

Issue 8477044: Introduce Pyauto tests for Quasar (Google Talk Extension). (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2011 Google Inc. All Rights Reserved.
Nirnimesh 2011/11/09 23:54:05 Switch to Chromium header
wud 2011/11/10 23:35:19 Done.
2
3 /**
4 * @fileoverview JS utilities automatically injected by Quasar PyAuto tests.
5 */
6
7 $KEYS = {
8 ENTER: 13,
9 ESC: 27
10 };
11
12 $VIEW = function(query) {
frankf 2011/12/05 20:34:57 Please document these functions. It goes a long wa
13 var views = chrome.extension.getViews();
14 for (var i = 0; i < views.length; i++) {
15 var url = views[i].location.href;
16 if (url && url.indexOf(query) >= 0) {
17 return views[i];
18 }
19 }
20 return null;
21 };
22
23 $BODY = function(opt_window) {
24 return (opt_window || window).document.body;
25 };
26
27 $FindByTagName = function(element, tag, index) {
28 var tagElements = element.getElementsByTagName(tag);
29 if (index < tagElements.length) {
30 return tagElements[index];
31 }
32 return null;
33 };
34
35 $FindByText = function(baseElement, text) {
36 var allElements = baseElement.getElementsByTagName('*');
37 for (var i = 0; i < allElements.length; i++) {
38 var element = allElements[i];
39 if (element.innerText && element.innerText.indexOf(text) >= 0) {
40 var child = $FindByText(element, text);
41 return child != null ? child : element;
42 }
43 }
44 return null;
45 };
46
47 $Click = function(element) {
48 var mouseEvent = element.ownerDocument.createEvent('MouseEvent');
49 mouseEvent.initMouseEvent('click', true, true, window,
50 1, 0, 0, 0, 0, false, false, false, false, 0, null);
51 element.dispatchEvent(mouseEvent);
52 return true;
53 };
54
55 $Type = function(element, text) {
56 var keyEvent = element.ownerDocument.createEvent('TextEvent');
57 keyEvent.initTextEvent('textInput', true, true, window, text);
58 element.dispatchEvent(keyEvent);
59 return true;
60 };
61
62 $Press = function(baseElement, keycode, opt_ctrlKey, opt_shiftKey,
63 opt_altKey, opt_metaKey) {
64 var sendKeyEvent = function(element, eventType) {
65 // Unfortuantely, using the typical KeyboardEvent and initKeyboardEvent
66 // fails in Chrome due to a webkit bug:
67 // https://bugs.webkit.org/show_bug.cgi?id=16735
68 // We employ a workaround of synthesizing a raw 'Event' suggested here:
69 // http://code.google.com/p/selenium/issues/detail?id=567
70 var keyEvent = element.ownerDocument.createEvent('Events');
71 keyEvent.ctrlKey = Boolean(opt_ctrlKey);
72 keyEvent.shiftKey = Boolean(opt_shiftKey);
73 keyEvent.altKey = Boolean(opt_altKey);
74 keyEvent.metaKey = Boolean(opt_metaKey);
75 keyEvent.initEvent(eventType, true, true);
76 keyEvent.keyCode = keycode;
77 element.dispatchEvent(keyEvent);
78 }
79 sendKeyEvent(baseElement, 'keydown');
80 sendKeyEvent(baseElement, 'keypress');
81 sendKeyEvent(baseElement, 'keyup');
82 return true;
83 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698