mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
b276daaae9
--HG-- extra : transplant_source : i%B7%1A%C3%27%81O%F9j%D8%DD%AF%BDd%ED%EFT%BB%C2%81
204 lines
7.7 KiB
JavaScript
204 lines
7.7 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 Test Pilot.
|
|
*
|
|
* The Initial Developer of the Original Code is Mozilla.
|
|
* Portions created by the Initial Developer are Copyright (C) 2007
|
|
* the Initial Developer. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
* Atul Varma <atul@mozilla.com>
|
|
* Jono X <jono@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 ***** */
|
|
|
|
var TestPilotMenuUtils;
|
|
|
|
(function() {
|
|
var Cc = Components.classes;
|
|
var Cu = Components.utils;
|
|
var Ci = Components.interfaces;
|
|
|
|
Cu.import("resource://testpilot/modules/setup.js");
|
|
|
|
TestPilotMenuUtils = {
|
|
updateSubmenu: function() {
|
|
let ntfyMenuFinished =
|
|
document.getElementById("pilot-menu-notify-finished");
|
|
let ntfyMenuNew = document.getElementById("pilot-menu-notify-new");
|
|
let ntfyMenuResults = document.getElementById("pilot-menu-notify-results");
|
|
let alwaysSubmitData =
|
|
document.getElementById("pilot-menu-always-submit-data");
|
|
let Application = Cc["@mozilla.org/fuel/application;1"]
|
|
.getService(Ci.fuelIApplication);
|
|
ntfyMenuFinished.setAttribute("checked", Application.prefs.getValue(
|
|
POPUP_SHOW_ON_FINISH, false));
|
|
ntfyMenuNew.setAttribute("checked", Application.prefs.getValue(
|
|
POPUP_SHOW_ON_NEW, false));
|
|
ntfyMenuResults.setAttribute("checked", Application.prefs.getValue(
|
|
POPUP_SHOW_ON_RESULTS, false));
|
|
alwaysSubmitData.setAttribute("checked", Application.prefs.getValue(
|
|
ALWAYS_SUBMIT_DATA, false));
|
|
},
|
|
|
|
togglePref: function(id) {
|
|
let prefName = "extensions.testpilot." + id;
|
|
let oldVal = Application.prefs.getValue(prefName, false);
|
|
Application.prefs.setValue( prefName, !oldVal);
|
|
|
|
// If you turn on or off the global pref, startup or shutdown test pilot
|
|
// accordingly:
|
|
if (prefName == RUN_AT_ALL_PREF) {
|
|
if (oldVal == true) {
|
|
TestPilotSetup.globalShutdown();
|
|
}
|
|
if (oldVal == false) {
|
|
TestPilotSetup.globalStartup();
|
|
}
|
|
}
|
|
},
|
|
|
|
onPopupShowing: function(event) {
|
|
this._setMenuLabels();
|
|
},
|
|
|
|
onPopupHiding: function(event) {
|
|
let target = event.target;
|
|
if (target.id == "pilot-menu-popup") {
|
|
let menu = document.getElementById("pilot-menu");
|
|
if (target.parentNode != menu) {
|
|
menu.appendChild(target);
|
|
}
|
|
}
|
|
},
|
|
|
|
_setMenuLabels: function() {
|
|
// Make the enable/disable User Studies menu item show the right label
|
|
// for the current status...
|
|
let runStudiesToggle = document.getElementById("feedback-menu-enable-studies");
|
|
if (runStudiesToggle) {
|
|
let currSetting = Application.prefs.getValue("extensions.testpilot.runStudies",
|
|
true);
|
|
|
|
let stringBundle = Cc["@mozilla.org/intl/stringbundle;1"].
|
|
getService(Ci.nsIStringBundleService).
|
|
createBundle("chrome://testpilot/locale/main.properties");
|
|
|
|
if (currSetting) {
|
|
runStudiesToggle.setAttribute("label",
|
|
stringBundle.GetStringFromName("testpilot.turnOff"));
|
|
} else {
|
|
runStudiesToggle.setAttribute("label",
|
|
stringBundle.GetStringFromName("testpilot.turnOn"));
|
|
}
|
|
}
|
|
|
|
let studiesMenuItem = document.getElementById("feedback-menu-show-studies");
|
|
studiesMenuItem.setAttribute("disabled",
|
|
!Application.prefs.getValue(RUN_AT_ALL_PREF, true));
|
|
},
|
|
|
|
onMenuButtonMouseDown: function(attachPointId) {
|
|
if (!attachPointId) {
|
|
attachPointId = "pilot-notifications-button";
|
|
}
|
|
let menuPopup = document.getElementById("pilot-menu-popup");
|
|
let menuButton = document.getElementById(attachPointId);
|
|
|
|
if (menuPopup.parentNode != menuButton)
|
|
menuButton.appendChild(menuPopup);
|
|
|
|
let alignment;
|
|
// Menu should appear above status bar icon, but below Feedback button
|
|
if (attachPointId == "pilot-notifications-button") {
|
|
alignment = "before_start";
|
|
} else {
|
|
alignment = "after_end";
|
|
}
|
|
|
|
menuPopup.openPopup(menuButton, alignment, 0, 0, true);
|
|
}
|
|
};
|
|
|
|
|
|
var TestPilotWindowHandlers = {
|
|
onWindowLoad: function() {
|
|
/* "Hold" window load events for TestPilotSetup, passing them along only
|
|
* after startup is complete. It's hacky, but the benefit is that
|
|
* TestPilotSetup.onWindowLoad can treat all windows the same no matter
|
|
* whether they opened with Firefox on startup or were opened later. */
|
|
TestPilotWindowHandlers.setUpToolbarFeedbackButton();
|
|
|
|
if (TestPilotSetup.startupComplete) {
|
|
TestPilotSetup.onWindowLoad(window);
|
|
} else {
|
|
let observerSvc = Cc["@mozilla.org/observer-service;1"]
|
|
.getService(Ci.nsIObserverService);
|
|
let observer = {
|
|
observe: function(subject, topic, data) {
|
|
observerSvc.removeObserver(this, "testpilot:startup:complete");
|
|
TestPilotSetup.onWindowLoad(window);
|
|
}
|
|
};
|
|
observerSvc.addObserver(observer, "testpilot:startup:complete", false);
|
|
}
|
|
},
|
|
|
|
setUpToolbarFeedbackButton: function() {
|
|
/* If this is first run, and it's ffx4 beta version, and the feedback
|
|
* button is not in the expected place, put it there!
|
|
* (copied from MozReporterButtons extension) */
|
|
if (!window.document.getElementById("feedback-menu-happy-button")) {
|
|
return;
|
|
}
|
|
let firefoxnav = window.document.getElementById("nav-bar");
|
|
let curSet = firefoxnav.currentSet;
|
|
|
|
if (-1 == curSet.indexOf("feedback-menu-button")) {
|
|
// place the buttons after the search box.
|
|
let newSet = curSet + ",feedback-menu-button";
|
|
|
|
firefoxnav.setAttribute("currentset", newSet);
|
|
firefoxnav.currentSet = newSet;
|
|
window.document.persist("nav-bar", "currentset");
|
|
// if you don't do the following call, funny things happen.
|
|
try {
|
|
BrowserToolboxCustomizeDone(true);
|
|
} catch (e) {
|
|
}
|
|
}
|
|
},
|
|
|
|
onWindowUnload: function() {
|
|
TestPilotSetup.onWindowUnload(window);
|
|
}
|
|
};
|
|
|
|
window.addEventListener("load", TestPilotWindowHandlers.onWindowLoad, false);
|
|
window.addEventListener("unload", TestPilotWindowHandlers.onWindowUnload, false);
|
|
}());
|
|
|