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 Navbar = require("navbar");
 39 var Tabbar = require("tabbar");
 40 
 41 // Needed if we have special widgets
 42 var Widgets = exports.Widgets = require("widgets");
 43 
 44 var wm = Cc["@mozilla.org/appshell/window-mediator;1"]
 45          .getService(Ci.nsIWindowMediator);
 46 
 47 /**
 48  * Get an instance of the browser window
 49  */
 50 var get = exports.get = function get(aWindow) {
 51   return new Browser(aWindow);
 52 }
 53 
 54 /**
 55  * UI class to handle the browser window
 56  */
 57 var Browser = exports.Browser = Inheritance.Class.extend(Widgets.Element, {
 58   initialize : function Browser_initialize(aWindow) {
 59     this._window = aWindow || wm.getMostRecentWindow("navigator:browser");
 60     this._document = this._window.document;
 61 
 62     this.parent(this._document, "#main-window");
 63   },
 64 
 65   get navbar() {
 66     this._navbar = this._navbar || new Navbar.NavBar(this.node);
 67     return this._navbar;
 68   },
 69 
 70   get tabbar() {
 71     this._tabbar = this._tabbar || new Tabbar.TabBar(this.node);
 72     return this._tabbar;
 73   },
 74 
 75   get window() {
 76     return this._window;
 77   },
 78 
 79   // temporarily - should be part of the tabs module.
 80   openURL : function Browser_openURL(aURL, aTimeout) {
 81     this.navbar.locationbar.type(aURL);
 82     this.navbar.locationbar.keypress("VK_RETURN", {});
 83     this.controller.waitForPageLoad(aTimeout);
 84   },
 85 
 86   waitForPageLoad : function Browser_waitForPageLoad(aTimeout) {
 87     this.controller.waitForPageLoad(aTimeout);
 88   }
 89 });
 90