1 /* ***** BEGIN LICENSE BLOCK *****
  2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3  *
  4  * The contents of this file are subject to the Mozilla Public License Version
  5  * 1.1 (the "License"); you may not use this file except in compliance with
  6  * the License. You may obtain a copy of the License at
  7  * http://www.mozilla.org/MPL/
  8  *
  9  * Software distributed under the License is distributed on an "AS IS" basis,
 10  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 11  * for the specific language governing rights and limitations under the
 12  * License.
 13  *
 14  * The Original Code is MozMill Test code.
 15  *
 16  * The Initial Developer of the Original Code is the Mozilla Foundation.
 17  * Portions created by the Initial Developer are Copyright (C) 2010
 18  * the Initial Developer. All Rights Reserved.
 19  *
 20  * Contributor(s):
 21  *   Henrik Skupin <hskupin@mozilla.com>
 22  *
 23  * Alternatively, the contents of this file may be used under the terms of
 24  * either the GNU General Public License Version 2 or later (the "GPL"), or
 25  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 26  * in which case the provisions of the GPL or the LGPL are applicable instead
 27  * of those above. If you wish to allow use of your version of this file only
 28  * under the terms of either the GPL or the LGPL, and not to allow others to
 29  * use your version of this file under the terms of the MPL, indicate your
 30  * decision by deleting the provisions above and replace them with the notice
 31  * and other provisions required by the GPL or the LGPL. If you do not delete
 32  * the provisions above, a recipient may use your version of this file under
 33  * the terms of any one of the MPL, the GPL or the LGPL.
 34  *
 35  * ***** END LICENSE BLOCK ***** */
 36 
 37 var Inheritance = require("../external/inheritance");
 38 var DOMUtils = require("dom_utils");
 39 
 40 var Element = exports.Element = Inheritance.Class.extend({
 41 
 42   /**
 43    * 
 44    */
 45   initialize : function Element_initialize(parentNode, selector) {
 46     this.parentNode = parentNode;
 47     this.selector = selector;
 48     this.document = this.parentNode.ownerDocument || this.parentNode;
 49     this.window = this.document.defaultView;
 50 
 51     this.collector = new DOMUtils.nodeCollector(this.parentNode);
 52     this.controller = new mozmill.controller.MozMillController(this.window);
 53   },
 54 
 55   get element() {
 56     return new elementslib.Elem(this.node);
 57   },
 58 
 59   get node() {
 60     this.collector.queryNodes(this.selector);
 61     return this.collector.nodes[0];
 62   },
 63 
 64   click : function Element_click() {
 65     this.controller.click(this.element);
 66   }
 67 });
 68 
 69 var Control = exports.Control = Inheritance.Class.extend(Element, {
 70   initialize : function Control_initialize(parentNode, selector) {
 71     this.parent(parentNode, selector);
 72   },
 73 
 74   keypress : function Control_keypress(aKey, aModifiers) {
 75     this.controller.keypress(this.element, aKey, aModifiers);
 76   }
 77 });
 78 
 79 var Button = exports.Button = Inheritance.Class.extend(Control, {
 80   initialize : function Button_initialize(parentNode, selector) {
 81     this.parent(parentNode, selector);
 82   }
 83 });
 84 
 85 var Textbox = exports.Textbox = Inheritance.Class.extend(Control, {
 86   initialize : function Textbox_initialize(parentNode, selector) {
 87     this.parent(parentNode, selector);
 88   },
 89 
 90   type : function Textbox_type(aText) {
 91     this.controller.type(this.element, aText);
 92   }
 93 });
 94