mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
c7edae7f0f
--HG-- rename : testing/mozmill/jsbridge-2.4.0/MANIFEST.in => testing/mozmill/jsbridge/MANIFEST.in rename : testing/mozmill/jsbridge-2.4.0/jsbridge/__init__.py => testing/mozmill/jsbridge/jsbridge/__init__.py rename : testing/mozmill/jsbridge-2.4.0/jsbridge/extension/chrome.manifest => testing/mozmill/jsbridge/jsbridge/extension/chrome.manifest rename : testing/mozmill/jsbridge-2.4.0/jsbridge/extension/chrome/content/overlay.js => testing/mozmill/jsbridge/jsbridge/extension/chrome/content/overlay.js rename : testing/mozmill/jsbridge-2.4.0/jsbridge/extension/chrome/content/overlay.xul => testing/mozmill/jsbridge/jsbridge/extension/chrome/content/overlay.xul rename : testing/mozmill/jsbridge-2.4.0/jsbridge/extension/components/cmdarg.js => testing/mozmill/jsbridge/jsbridge/extension/components/cmdarg.js rename : testing/mozmill/jsbridge-2.4.0/jsbridge/extension/install.rdf => testing/mozmill/jsbridge/jsbridge/extension/install.rdf rename : testing/mozmill/jsbridge-2.4.0/jsbridge/extension/resource/modules/events.js => testing/mozmill/jsbridge/jsbridge/extension/resource/modules/events.js rename : testing/mozmill/jsbridge-2.4.0/jsbridge/extension/resource/modules/init.js => testing/mozmill/jsbridge/jsbridge/extension/resource/modules/init.js rename : testing/mozmill/jsbridge-2.4.0/jsbridge/extension/resource/modules/json2.js => testing/mozmill/jsbridge/jsbridge/extension/resource/modules/json2.js rename : testing/mozmill/jsbridge-2.4.0/jsbridge/extension/resource/modules/server.js => testing/mozmill/jsbridge/jsbridge/extension/resource/modules/server.js rename : testing/mozmill/jsbridge-2.4.0/jsbridge/jsobjects.py => testing/mozmill/jsbridge/jsbridge/jsobjects.py rename : testing/mozmill/jsbridge-2.4.0/jsbridge/network.py => testing/mozmill/jsbridge/jsbridge/network.py rename : testing/mozmill/jsbridge-2.4.0/setup.py => testing/mozmill/jsbridge/setup.py rename : testing/mozmill/mozmill-1.5.0/MANIFEST.in => testing/mozmill/mozmill/MANIFEST.in rename : testing/mozmill/mozmill-1.5.0/docs/Makefile => testing/mozmill/mozmill/docs/Makefile rename : testing/mozmill/mozmill-1.5.0/docs/_build/doctrees/environment.pickle => testing/mozmill/mozmill/docs/_build/doctrees/environment.pickle rename : testing/mozmill/mozmill-1.5.0/docs/_build/doctrees/index.doctree => testing/mozmill/mozmill/docs/_build/doctrees/index.doctree rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_sources/index.txt => testing/mozmill/mozmill/docs/_build/html/_sources/index.txt rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/contents.png => testing/mozmill/mozmill/docs/_build/html/_static/contents.png rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/default.css => testing/mozmill/mozmill/docs/_build/html/_static/default.css rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/doctools.js => testing/mozmill/mozmill/docs/_build/html/_static/doctools.js rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/file.png => testing/mozmill/mozmill/docs/_build/html/_static/file.png rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/jquery.js => testing/mozmill/mozmill/docs/_build/html/_static/jquery.js rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/minus.png => testing/mozmill/mozmill/docs/_build/html/_static/minus.png rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/navigation.png => testing/mozmill/mozmill/docs/_build/html/_static/navigation.png rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/plus.png => testing/mozmill/mozmill/docs/_build/html/_static/plus.png rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/pygments.css => testing/mozmill/mozmill/docs/_build/html/_static/pygments.css rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/rightsidebar.css => testing/mozmill/mozmill/docs/_build/html/_static/rightsidebar.css rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/searchtools.js => testing/mozmill/mozmill/docs/_build/html/_static/searchtools.js rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/sphinxdoc.css => testing/mozmill/mozmill/docs/_build/html/_static/sphinxdoc.css rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/stickysidebar.css => testing/mozmill/mozmill/docs/_build/html/_static/stickysidebar.css rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/_static/traditional.css => testing/mozmill/mozmill/docs/_build/html/_static/traditional.css rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/genindex.html => testing/mozmill/mozmill/docs/_build/html/genindex.html rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/index.html => testing/mozmill/mozmill/docs/_build/html/index.html rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/modindex.html => testing/mozmill/mozmill/docs/_build/html/modindex.html rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/objects.inv => testing/mozmill/mozmill/docs/_build/html/objects.inv rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/search.html => testing/mozmill/mozmill/docs/_build/html/search.html rename : testing/mozmill/mozmill-1.5.0/docs/_build/html/searchindex.js => testing/mozmill/mozmill/docs/_build/html/searchindex.js rename : testing/mozmill/mozmill-1.5.0/docs/conf.py => testing/mozmill/mozmill/docs/conf.py rename : testing/mozmill/mozmill-1.5.0/docs/index.rst => testing/mozmill/mozmill/docs/index.rst rename : testing/mozmill/mozmill-1.5.0/mozmill/__init__.py => testing/mozmill/mozmill/mozmill/__init__.py rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/build.xml => testing/mozmill/mozmill/mozmill/extension/build.xml rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/chrome-jar.manifest => testing/mozmill/mozmill/mozmill/extension/chrome-jar.manifest rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/chrome.manifest => testing/mozmill/mozmill/mozmill/extension/chrome.manifest rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/chrome.js => testing/mozmill/mozmill/mozmill/extension/content/chrome.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/fg.menu.css => testing/mozmill/mozmill/mozmill/extension/content/css/fg.menu.css rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/mozmill.css => testing/mozmill/mozmill/mozmill/extension/content/css/mozmill.css rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-icons_222222_256x240.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-icons_222222_256x240.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-icons_2e83ff_256x240.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-icons_2e83ff_256x240.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-icons_454545_256x240.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-icons_454545_256x240.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-icons_888888_256x240.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-icons_888888_256x240.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/images/ui-icons_cd0a0a_256x240.png => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/images/ui-icons_cd0a0a_256x240.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/css/smoothness/jquery-ui-1.7.1.custom.css => testing/mozmill/mozmill/mozmill/extension/content/css/smoothness/jquery-ui-1.7.1.custom.css rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/dx.js => testing/mozmill/mozmill/mozmill/extension/content/dx.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/dxwindow.xul => testing/mozmill/mozmill/mozmill/extension/content/dxwindow.xul rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/editor/bespin/BespinEmbedded.css => testing/mozmill/mozmill/mozmill/extension/content/editor/bespin/BespinEmbedded.css rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/editor/bespin/BespinEmbedded.js => testing/mozmill/mozmill/mozmill/extension/content/editor/bespin/BespinEmbedded.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/editor/bespin/BespinMain.js => testing/mozmill/mozmill/mozmill/extension/content/editor/bespin/BespinMain.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/editor/bespin/BespinWorker.js => testing/mozmill/mozmill/mozmill/extension/content/editor/bespin/BespinWorker.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/editor/bespin/resources/screen_theme/theme.less => testing/mozmill/mozmill/mozmill/extension/content/editor/bespin/resources/screen_theme/theme.less rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/editor/editor.js => testing/mozmill/mozmill/mozmill/extension/content/editor/editor.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/img/wmIcon.png => testing/mozmill/mozmill/mozmill/extension/content/img/wmIcon.png rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/inspector.js => testing/mozmill/mozmill/mozmill/extension/content/inspector.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/jquery/fg.menu.css => testing/mozmill/mozmill/mozmill/extension/content/jquery/fg.menu.css rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/jquery/fg.menu.js => testing/mozmill/mozmill/mozmill/extension/content/jquery/fg.menu.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/jquery/jquery-1.3.2.min.js => testing/mozmill/mozmill/mozmill/extension/content/jquery/jquery-1.3.2.min.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/jquery/jquery-ui-1.7.1.custom.min.js => testing/mozmill/mozmill/mozmill/extension/content/jquery/jquery-ui-1.7.1.custom.min.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/jquery/jquery.ui.core.js => testing/mozmill/mozmill/mozmill/extension/content/jquery/jquery.ui.core.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/jquery/jquery.ui.menu.js => testing/mozmill/mozmill/mozmill/extension/content/jquery/jquery.ui.menu.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/menus.js => testing/mozmill/mozmill/mozmill/extension/content/menus.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/mozmill.html => testing/mozmill/mozmill/mozmill/extension/content/mozmill.html rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/mozmill.js => testing/mozmill/mozmill/mozmill/extension/content/mozmill.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/mozmill.xul => testing/mozmill/mozmill/mozmill/extension/content/mozmill.xul rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/output.js => testing/mozmill/mozmill/mozmill/extension/content/output.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/overlay.js => testing/mozmill/mozmill/mozmill/extension/content/overlay.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/overlay.xul => testing/mozmill/mozmill/mozmill/extension/content/overlay.xul rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/overlay_tb.xul => testing/mozmill/mozmill/mozmill/extension/content/overlay_tb.xul rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/prefs.xul => testing/mozmill/mozmill/mozmill/extension/content/prefs.xul rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/rec.js => testing/mozmill/mozmill/mozmill/extension/content/rec.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/shell.js => testing/mozmill/mozmill/mozmill/extension/content/shell.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/shortcuts.js => testing/mozmill/mozmill/mozmill/extension/content/shortcuts.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/testwindow.xul => testing/mozmill/mozmill/mozmill/extension/content/testwindow.xul rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/content/ui.js => testing/mozmill/mozmill/mozmill/extension/content/ui.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/defaults/preferences/debug.js => testing/mozmill/mozmill/mozmill/extension/defaults/preferences/debug.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/install.rdf => testing/mozmill/mozmill/mozmill/extension/install.rdf rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/locale/en-US/mozmill.dtd => testing/mozmill/mozmill/mozmill/extension/locale/en-US/mozmill.dtd rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/locale/en-US/overlay.dtd => testing/mozmill/mozmill/mozmill/extension/locale/en-US/overlay.dtd rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/readme.txt => testing/mozmill/mozmill/mozmill/extension/readme.txt rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/modules/controller.js => testing/mozmill/mozmill/mozmill/extension/resource/modules/controller.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/modules/elementslib.js => testing/mozmill/mozmill/mozmill/extension/resource/modules/elementslib.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/modules/events.js => testing/mozmill/mozmill/mozmill/extension/resource/modules/events.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/modules/frame.js => testing/mozmill/mozmill/mozmill/extension/resource/modules/frame.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/modules/init.js => testing/mozmill/mozmill/mozmill/extension/resource/modules/init.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/modules/inspection.js => testing/mozmill/mozmill/mozmill/extension/resource/modules/inspection.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/modules/jum.js => testing/mozmill/mozmill/mozmill/extension/resource/modules/jum.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/modules/mozmill.js => testing/mozmill/mozmill/mozmill/extension/resource/modules/mozmill.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/modules/utils.js => testing/mozmill/mozmill/mozmill/extension/resource/modules/utils.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/stdlib/EventUtils.js => testing/mozmill/mozmill/mozmill/extension/resource/stdlib/EventUtils.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/stdlib/arrays.js => testing/mozmill/mozmill/mozmill/extension/resource/stdlib/arrays.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/stdlib/dom.js => testing/mozmill/mozmill/mozmill/extension/resource/stdlib/dom.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/stdlib/httpd.js => testing/mozmill/mozmill/mozmill/extension/resource/stdlib/httpd.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/stdlib/json2.js => testing/mozmill/mozmill/mozmill/extension/resource/stdlib/json2.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/stdlib/objects.js => testing/mozmill/mozmill/mozmill/extension/resource/stdlib/objects.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/stdlib/os.js => testing/mozmill/mozmill/mozmill/extension/resource/stdlib/os.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/stdlib/strings.js => testing/mozmill/mozmill/mozmill/extension/resource/stdlib/strings.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/resource/stdlib/withs.js => testing/mozmill/mozmill/mozmill/extension/resource/stdlib/withs.js rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/skin/chrome.css => testing/mozmill/mozmill/mozmill/extension/skin/chrome.css rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/skin/overlay.css => testing/mozmill/mozmill/mozmill/extension/skin/overlay.css rename : testing/mozmill/mozmill-1.5.0/mozmill/extension/zipexclude.lst => testing/mozmill/mozmill/mozmill/extension/zipexclude.lst rename : testing/mozmill/mozmill-1.5.0/setup.py => testing/mozmill/mozmill/setup.py rename : testing/mozmill/mozmill-1.5.0/test/test_python_callbacks_callbacks.py => testing/mozmill/mozmill/test/test_python_callbacks_callbacks.py rename : testing/mozmill/mozrunner-2.5.1/mozrunner/__init__.py => testing/mozmill/mozrunner/mozrunner/__init__.py rename : testing/mozmill/mozrunner-2.5.1/mozrunner/killableprocess.py => testing/mozmill/mozrunner/mozrunner/killableprocess.py rename : testing/mozmill/mozrunner-2.5.1/mozrunner/qijo.py => testing/mozmill/mozrunner/mozrunner/qijo.py rename : testing/mozmill/mozrunner-2.5.1/mozrunner/winprocess.py => testing/mozmill/mozrunner/mozrunner/winprocess.py rename : testing/mozmill/mozrunner-2.5.1/mozrunner/wpk.py => testing/mozmill/mozrunner/mozrunner/wpk.py rename : testing/mozmill/mozrunner-2.5.1/setup.py => testing/mozmill/mozrunner/setup.py
456 lines
16 KiB
JavaScript
456 lines
16 KiB
JavaScript
/* * ***** BEGIN LICENSE BLOCK *****
|
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public License Version
|
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
* the License. You may obtain a copy of the License at
|
|
* http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
* for the specific language governing rights and limitations under the
|
|
* License.
|
|
*
|
|
* The Original Code is MozMill Test code.
|
|
*
|
|
* The Initial Developer of the Original Code is Mozilla Foundation.
|
|
* Portions created by the Initial Developer are Copyright (C) 2009
|
|
* the Initial Developer. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
* Henrik Skupin <hskupin@mozilla.com>
|
|
*
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
* of those above. If you wish to allow use of your version of this file only
|
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
* use your version of this file under the terms of the MPL, indicate your
|
|
* decision by deleting the provisions above and replace them with the notice
|
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
* the provisions above, a recipient may use your version of this file under
|
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
*
|
|
* **** END LICENSE BLOCK ***** */
|
|
|
|
/**
|
|
* @fileoverview
|
|
* The SoftwareUpdateAPI adds support for an easy access to the update process.
|
|
*/
|
|
|
|
const MODULE_NAME = 'SoftwareUpdateAPI';
|
|
|
|
const RELATIVE_ROOT = '.';
|
|
const MODULE_REQUIRES = ['PrefsAPI', 'UtilsAPI'];
|
|
|
|
const gTimeout = 5000;
|
|
const gTimeoutUpdateCheck = 10000;
|
|
const gTimeoutUpdateDownload = 360000;
|
|
|
|
// Helper lookup constants for elements of the software update dialog
|
|
const WIZARD = '/id("updates")';
|
|
const WIZARD_BUTTONS = WIZARD + '/anon({"anonid":"Buttons"})';
|
|
const WIZARD_DECK = WIZARD + '/anon({"anonid":"Deck"})';
|
|
|
|
const WIZARD_PAGES = {
|
|
dummy: 'dummy',
|
|
checking: 'checking',
|
|
pluginUpdatesFound: 'pluginupdatesfound',
|
|
noUpdatesFound: 'noupdatesfound',
|
|
manualUpdate: 'manualUpdate',
|
|
incompatibleCheck: 'incompatibleCheck',
|
|
updatesFoundBasic: 'updatesfoundbasic',
|
|
updatesFoundBillboard: 'updatesfoundbillboard',
|
|
license: 'license',
|
|
incompatibleList: 'incompatibleList',
|
|
downloading: 'downloading',
|
|
errors: 'errors',
|
|
errorPatching: 'errorpatching',
|
|
finished: 'finished',
|
|
finishedBackground: 'finishedBackground',
|
|
installed: 'installed'
|
|
}
|
|
|
|
// On Mac there is another DOM structure used as on Windows and Linux
|
|
if (mozmill.isMac) {
|
|
var WIZARD_BUTTONS_BOX = WIZARD_BUTTONS +
|
|
'/anon({"flex":"1"})/{"class":"wizard-buttons-btm"}/';
|
|
var WIZARD_BUTTON = {
|
|
back: '{"dlgtype":"back"}',
|
|
next: '{"dlgtype":"next"}',
|
|
cancel: '{"dlgtype":"cancel"}',
|
|
finish: '{"dlgtype":"finish"}',
|
|
extra1: '{"dlgtype":"extra1"}',
|
|
extra2: '{"dlgtype":"extra2"}'
|
|
}
|
|
} else {
|
|
var WIZARD_BUTTONS_BOX = WIZARD_BUTTONS +
|
|
'/anon({"flex":"1"})/{"class":"wizard-buttons-box-2"}/';
|
|
var WIZARD_BUTTON = {
|
|
back: '{"dlgtype":"back"}',
|
|
next: 'anon({"anonid":"WizardButtonDeck"})/[1]/{"dlgtype":"next"}',
|
|
cancel: '{"dlgtype":"cancel"}',
|
|
finish: 'anon({"anonid":"WizardButtonDeck"})/[0]/{"dlgtype":"finish"}',
|
|
extra1: '{"dlgtype":"extra1"}',
|
|
extra2: '{"dlgtype":"extra2"}'
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Constructor for software update class
|
|
*/
|
|
function softwareUpdate()
|
|
{
|
|
this._controller = null;
|
|
this._wizard = null;
|
|
|
|
this._PrefsAPI = collector.getModule('PrefsAPI');
|
|
this._UtilsAPI = collector.getModule('UtilsAPI');
|
|
|
|
this._aus = Cc["@mozilla.org/updates/update-service;1"].
|
|
getService(Ci.nsIApplicationUpdateService);
|
|
this._ums = Cc["@mozilla.org/updates/update-manager;1"].
|
|
getService(Ci.nsIUpdateManager);
|
|
this._vc = Cc["@mozilla.org/xpcom/version-comparator;1"].
|
|
getService(Ci.nsIVersionComparator);
|
|
}
|
|
|
|
/**
|
|
* Class for software updates
|
|
*/
|
|
softwareUpdate.prototype = {
|
|
/**
|
|
* Returns the active update
|
|
*
|
|
* @returns The currently selected update
|
|
* @type nsIUpdate
|
|
*/
|
|
get activeUpdate() {
|
|
return this._ums.activeUpdate;
|
|
},
|
|
|
|
/**
|
|
* Check if the user has permissions to run the software update
|
|
*
|
|
* @returns Status if the user has the permissions.
|
|
* @type {boolean}
|
|
*/
|
|
get allowed() {
|
|
return this._aus.canCheckForUpdates && this._aus.canApplyUpdates;
|
|
},
|
|
|
|
/**
|
|
* Get the controller of the associated engine manager dialog
|
|
*
|
|
* @returns Controller of the browser window
|
|
* @type MozMillController
|
|
*/
|
|
get controller() {
|
|
return this._controller;
|
|
},
|
|
|
|
/**
|
|
* Returns the current step of the software update dialog wizard
|
|
*/
|
|
get currentPage() {
|
|
return this._wizard.getNode().getAttribute('currentpageid');
|
|
},
|
|
|
|
/**
|
|
* Returns true if the offered update is a complete update
|
|
*/
|
|
get isCompleteUpdate() {
|
|
// Throw when isCompleteUpdate is called without an update. This should
|
|
// never happen except if the test is incorrectly written.
|
|
if (!this.activeUpdate)
|
|
throw new Error(arguments.callee.name + ": isCompleteUpdate called " +
|
|
"when activeUpdate is null!");
|
|
|
|
var patchCount = this.activeUpdate.patchCount;
|
|
// Test that the update snippet created by releng has less than 3 patches
|
|
controller.assertJS("subject.patchCount < 3",
|
|
{patchCount: patchCount < 3});
|
|
// Test that the update snippet created by releng has more than 0 patches
|
|
controller.assertJS("subject.patchCount > 0",
|
|
{patchCount: patchCount > 0});
|
|
|
|
// XXX: After Firefox 4 has been released and we do not have to test any
|
|
// beta release anymore uncomment out the following code
|
|
// if (this.activeUpdate.patchCount == 2) {
|
|
// var patch0URL = this.activeUpdate.getPatchAt(0).URL;
|
|
// var patch1URL = this.activeUpdate.getPatchAt(1).URL;
|
|
// Test that the update snippet created by releng doesn't have the same
|
|
// url for both patches (bug 514040).
|
|
// controller.assertJS("subject.patch0URL != subject.patch1URL",
|
|
// {patch0URL: patch0URL, patch1URL: patch1URL});
|
|
// }
|
|
|
|
return (this.activeUpdate.selectedPatch.type == "complete");
|
|
},
|
|
|
|
/**
|
|
* Returns the update type (minor or major)
|
|
*
|
|
* @returns The update type
|
|
*/
|
|
get updateType() {
|
|
return this.activeUpdate.type;
|
|
},
|
|
|
|
/**
|
|
* Check if updates have been found
|
|
*/
|
|
get updatesFound() {
|
|
return this.currentPage.indexOf("updatesfound") == 0;
|
|
},
|
|
|
|
/**
|
|
* Checks if an update has been applied correctly
|
|
*
|
|
* @param {object} updateData
|
|
* All the data collected during the update process
|
|
*/
|
|
assertUpdateApplied : function softwareUpdate_assertUpdateApplied(updateData) {
|
|
// The upgraded version should be identical with the version given by
|
|
// the update and we shouldn't have run a downgrade
|
|
var check = this._vc.compare(updateData.postVersion, updateData.preVersion);
|
|
|
|
controller.assertJS("subject.newVersionGreater == true",
|
|
{newVersionGreater: check >= 0});
|
|
|
|
// If we have the same version number we should check the build id instead
|
|
if (check == 0) {
|
|
controller.assertJS("subject.postBuildId == subject.updateBuildId",
|
|
{postBuildId: updateData.postBuildId, updateBuildId: updateData.updateBuildId});
|
|
}
|
|
|
|
// An upgrade should not change the builds locale
|
|
controller.assertJS("subject.postLocale == subject.preLocale",
|
|
{postLocale: updateData.postLocale, preLocale: updateData.preLocale});
|
|
},
|
|
|
|
/**
|
|
* Close the software update dialog
|
|
*/
|
|
closeDialog: function softwareUpdate_closeDialog() {
|
|
if (this._controller) {
|
|
this._controller.keypress(null, "VK_ESCAPE", {});
|
|
this._controller.sleep(500);
|
|
this._controller = null;
|
|
this._wizard = null;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Download the update of the given channel and type
|
|
* @param {string} channel
|
|
* Update channel to use
|
|
* @param {boolean} waitForFinish
|
|
* Sets if the function should wait until the download has been finished
|
|
* @param {number} timeout
|
|
* Timeout the download has to stop
|
|
*/
|
|
download : function softwareUpdate_download(channel, waitForFinish, timeout) {
|
|
waitForFinish = waitForFinish ? waitForFinish : true;
|
|
|
|
// Check that the correct channel has been set
|
|
var prefChannel = this._PrefsAPI.preferences.getPref('app.update.channel', '');
|
|
this._controller.assertJS("subject.currentChannel == subject.expectedChannel",
|
|
{currentChannel: channel, expectedChannel: prefChannel});
|
|
|
|
// Click the next button
|
|
var next = this.getElement({type: "button", subtype: "next"});
|
|
this._controller.click(next);
|
|
|
|
// Wait for the download page
|
|
this.waitForWizardPage(WIZARD_PAGES.downloading);
|
|
|
|
if (waitForFinish)
|
|
this.waitforDownloadFinished(timeout);
|
|
},
|
|
|
|
/**
|
|
* Update the update.status file and set the status to 'failed:6'
|
|
*/
|
|
forceFallback : function softwareUpdate_forceFallback() {
|
|
var dirService = Cc["@mozilla.org/file/directory_service;1"]
|
|
.getService(Ci.nsIProperties);
|
|
|
|
var updateDir;
|
|
var updateStatus;
|
|
|
|
// Check the global update folder first
|
|
try {
|
|
updateDir = dirService.get("UpdRootD", Ci.nsIFile);
|
|
updateDir.append("updates");
|
|
updateDir.append("0");
|
|
|
|
updateStatus = updateDir.clone();
|
|
updateStatus.append("update.status");
|
|
} catch (ex) {
|
|
}
|
|
|
|
if (updateStatus == undefined || !updateStatus.exists()) {
|
|
updateDir = dirService.get("XCurProcD", Ci.nsIFile);
|
|
updateDir.append("updates");
|
|
updateDir.append("0");
|
|
|
|
updateStatus = updateDir.clone();
|
|
updateStatus.append("update.status");
|
|
}
|
|
|
|
var foStream = Cc["@mozilla.org/network/file-output-stream;1"]
|
|
.createInstance(Ci.nsIFileOutputStream);
|
|
var status = "failed: 6\n";
|
|
foStream.init(updateStatus, 0x02 | 0x08 | 0x20, -1, 0);
|
|
foStream.write(status, status.length);
|
|
foStream.close();
|
|
},
|
|
|
|
/**
|
|
* Gets all the needed external DTD urls as an array
|
|
*
|
|
* @returns Array of external DTD urls
|
|
* @type [string]
|
|
*/
|
|
getDtds : function softwareUpdate_getDtds() {
|
|
var dtds = ["chrome://mozapps/locale/update/history.dtd",
|
|
"chrome://mozapps/locale/update/updates.dtd"]
|
|
return dtds;
|
|
},
|
|
|
|
/**
|
|
* Retrieve an UI element based on the given spec
|
|
*
|
|
* @param {object} spec
|
|
* Information of the UI element which should be retrieved
|
|
* type: General type information
|
|
* subtype: Specific element or property
|
|
* value: Value of the element or property
|
|
* @returns Element which has been created
|
|
* @type {ElemBase}
|
|
*/
|
|
getElement : function softwareUpdate_getElement(spec) {
|
|
var elem = null;
|
|
|
|
switch(spec.type) {
|
|
/**
|
|
* subtype: subtype to match
|
|
* value: value to match
|
|
*/
|
|
case "button":
|
|
elem = new elementslib.Lookup(this._controller.window.document,
|
|
WIZARD_BUTTONS_BOX + WIZARD_BUTTON[spec.subtype]);
|
|
break;
|
|
case "wizard":
|
|
elem = new elementslib.Lookup(this._controller.window.document, WIZARD);
|
|
break;
|
|
case "wizard_page":
|
|
elem = new elementslib.Lookup(this._controller.window.document, WIZARD_DECK +
|
|
'/id(' + spec.subtype + ')');
|
|
break;
|
|
case "download_progress":
|
|
elem = new elementslib.ID(this._controller.window.document, "downloadProgress");
|
|
break;
|
|
default:
|
|
throw new Error(arguments.callee.name + ": Unknown element type - " + spec.type);
|
|
}
|
|
|
|
return elem;
|
|
},
|
|
|
|
/**
|
|
* Open software update dialog
|
|
*
|
|
* @param {MozMillController} browserController
|
|
* Mozmill controller of the browser window
|
|
*/
|
|
openDialog: function softwareUpdate_openDialog(browserController) {
|
|
// XXX: After Firefox 4 has been released and we do not have to test any
|
|
// beta release anymore uncomment out the following code
|
|
|
|
// With version >= 4.0b7pre the update dialog is reachable from within the
|
|
// about window now. It only applies to Windows and Linux.
|
|
var appVersion = this._UtilsAPI.appInfo.version;
|
|
|
|
if (!mozmill.isMac && this._vc.compare(appVersion, "4.0b7pre") >= 0) {
|
|
// Open the about window and click the update button
|
|
aboutItem = new elementslib.Elem(browserController.menus.helpMenu.aboutName);
|
|
browserController.click(aboutItem);
|
|
|
|
this._UtilsAPI.handleWindow("type", "Browser:About", function(controller) {
|
|
// XXX: Bug 599290 - Check for updates has been completely relocated
|
|
// into the about window. We can't check the in-about ui yet.
|
|
var updateButton = new elementslib.ID(controller.window.document,
|
|
"checkForUpdatesButton");
|
|
//controller.click(updateButton);
|
|
controller.waitForElement(updateButton, gTimeout);
|
|
});
|
|
|
|
// For now just call the old ui until we have a fix.
|
|
var updatePrompt = Cc["@mozilla.org/updates/update-prompt;1"].
|
|
createInstance(Ci.nsIUpdatePrompt);
|
|
updatePrompt.checkForUpdates();
|
|
} else {
|
|
updateItem = new elementslib.Elem(browserController.menus.helpMenu.checkForUpdates);
|
|
browserController.click(updateItem);
|
|
}
|
|
|
|
this.waitForDialogOpen(browserController);
|
|
},
|
|
|
|
/**
|
|
* Wait that check for updates has been finished
|
|
* @param {number} timeout
|
|
*/
|
|
waitForCheckFinished : function softwareUpdate_waitForCheckFinished(timeout) {
|
|
timeout = timeout ? timeout : gTimeoutUpdateCheck;
|
|
|
|
this._controller.waitForEval("subject.wizard.currentPage != subject.checking", timeout, 100,
|
|
{wizard: this, checking: WIZARD_PAGES.checking});
|
|
},
|
|
|
|
/**
|
|
* Wait for the software update dialog
|
|
*
|
|
* @param {MozMillController} browserController
|
|
* Mozmill controller of the browser window
|
|
*/
|
|
waitForDialogOpen : function softwareUpdate_waitForDialogOpen(browserController) {
|
|
this._controller = this._UtilsAPI.handleWindow("type", "Update:Wizard",
|
|
null, true);
|
|
this._wizard = this.getElement({type: "wizard"});
|
|
|
|
// Wait until the dummy wizard page isn't visible anymore
|
|
this._controller.waitForEval("subject.wizard.currentPage != subject.dummy", gTimeout, 100,
|
|
{wizard: this, dummy: WIZARD_PAGES.dummy});
|
|
this._controller.window.focus();
|
|
},
|
|
|
|
/**
|
|
* Wait until the download has been finished
|
|
*
|
|
* @param {number} timeout
|
|
* Timeout the download has to stop
|
|
*/
|
|
waitforDownloadFinished: function softwareUpdate_waitForDownloadFinished(timeout) {
|
|
timeout = timeout ? timeout : gTimeoutUpdateDownload;
|
|
|
|
// Wait until the update has been downloaded
|
|
var progress = this.getElement({type: "download_progress"});
|
|
this._controller.waitForEval("subject.progress.value == 100", timeout, 100,
|
|
{progress: progress.getNode()});
|
|
|
|
this.waitForWizardPage(WIZARD_PAGES.finished);
|
|
},
|
|
|
|
/**
|
|
* Waits for the given page of the update dialog wizard
|
|
*/
|
|
waitForWizardPage : function softwareUpdate_waitForWizardPage(step) {
|
|
this._controller.waitForEval("subject.currentPage == '" + step + "'",
|
|
gTimeout, 100, this);
|
|
}
|
|
}
|