mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-07 20:17:37 +00:00
f50c3889cd
p=me r=db48x sr=jag
251 lines
9.7 KiB
XML
251 lines
9.7 KiB
XML
<?xml version="1.0"?>
|
|
|
|
<!-- ***** 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 mozilla.org code.
|
|
-
|
|
- The Initial Developer of the Original Code is
|
|
- Netscape Communications Corporation.
|
|
- Portions created by the Initial Developer are Copyright (C) 2002
|
|
- the Initial Developer. All Rights Reserved.
|
|
-
|
|
- Contributor(s):
|
|
-
|
|
- 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 LGPL or the GPL. 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 ***** -->
|
|
|
|
<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
|
|
|
|
<!DOCTYPE page [
|
|
<!ENTITY % prefPopupsDTD SYSTEM "chrome://communicator/locale/pref/pref-popups.dtd" >
|
|
%prefPopupsDTD;
|
|
]>
|
|
|
|
<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
|
id="popupsPanel"
|
|
onload="parent.initPanel('chrome://communicator/content/pref/pref-popups.xul');"
|
|
headertitle="&pref.popups.title;">
|
|
|
|
<script type="application/x-javascript" src="chrome://communicator/content/permissions/permissionsOverlay.js"/>
|
|
|
|
<script type="application/x-javascript">
|
|
<![CDATA[
|
|
|
|
var _elementIDs = ["popupPolicy","playSound","playSoundUrl","displayIcon","removeBlacklist","prefillWhitelist"];
|
|
|
|
const nsIPermissionManager = Components.interfaces.nsIPermissionManager;
|
|
const popupType = "popup";
|
|
|
|
var gPolicyCheckbox;
|
|
var gSoundCheckbox;
|
|
var gSoundUrlBox;
|
|
var gSoundUrlButton;
|
|
var gPreviewSoundButton;
|
|
var gIconCheckbox;
|
|
|
|
var permissionManager;
|
|
var ioService;
|
|
|
|
function Startup() {
|
|
permissionManager = Components.classes["@mozilla.org/permissionmanager;1"]
|
|
.getService(nsIPermissionManager);
|
|
|
|
ioService = Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
|
|
gPolicyCheckbox = document.getElementById("popupPolicy");
|
|
gSoundCheckbox = document.getElementById("playSound");
|
|
gSoundUrlBox = document.getElementById("playSoundUrl");
|
|
gSoundUrlButton = document.getElementById("selectSound");
|
|
gPreviewSoundButton = document.getElementById("previewSound");
|
|
gIconCheckbox = document.getElementById("displayIcon");
|
|
|
|
var removeBlacklist = (document.getElementById("removeBlacklist").getAttribute("value") == "true");
|
|
if (removeBlacklist) {
|
|
clearBlacklist();
|
|
document.getElementById("removeBlacklist").setAttribute("value", false);
|
|
}
|
|
|
|
var prefillWhitelist = (document.getElementById("prefillWhitelist").getAttribute("value") == "true");
|
|
if (prefillWhitelist) {
|
|
loadWhitelist();
|
|
document.getElementById("prefillWhitelist").setAttribute("value", false);
|
|
}
|
|
|
|
if (parent.queuedTag == "chrome://communicator/content/pref/pref-popups.xul") {
|
|
// opened from About Popups menuitem
|
|
gPolicyCheckbox.checked = true;
|
|
parent.queuedTag = null;
|
|
}
|
|
|
|
setButtons();
|
|
}
|
|
|
|
function clearBlacklist() {
|
|
var enumerator = permissionManager.enumerator;
|
|
var hosts = [];
|
|
|
|
while (enumerator.hasMoreElements()) {
|
|
var permission = enumerator.getNext();
|
|
if (permission) {
|
|
permission = permission.QueryInterface(Components.interfaces.nsIPermission);
|
|
if ((permission.type == popupType) && (permission.capability == nsIPermissionManager.DENY_ACTION))
|
|
hosts[hosts.length] = permission.host;
|
|
}
|
|
}
|
|
|
|
for (var i in hosts) {
|
|
permissionManager.remove(hosts[i], popupType);
|
|
}
|
|
|
|
}
|
|
|
|
function loadWhitelist() {
|
|
try {
|
|
var whitelist = parent.hPrefWindow.getPref("localizedstring",
|
|
"privacy.popups.default_whitelist");
|
|
var hosts = whitelist.split(",");
|
|
|
|
for (var i in hosts) {
|
|
var host = hosts[i];
|
|
host = "http://" + host;
|
|
var uri = ioService.newURI(host, null, null);
|
|
permissionManager.add(uri, popupType, true);
|
|
}
|
|
}
|
|
catch (ex) { }
|
|
}
|
|
|
|
function setButtons() {
|
|
var exceptionsButton = document.getElementById("exceptionsButton");
|
|
exceptionsButton.disabled = !gPolicyCheckbox.checked;
|
|
|
|
if (!gPolicyCheckbox.checked) {
|
|
gSoundCheckbox.disabled = true;
|
|
gSoundUrlBox.disabled = true;
|
|
gSoundUrlButton.disabled = true;
|
|
gPreviewSoundButton.disabled = true;
|
|
gIconCheckbox.disabled = true;
|
|
}
|
|
else {
|
|
gSoundCheckbox.disabled = false;
|
|
gSoundUrlBox.disabled = false;
|
|
gSoundUrlButton.disabled = false;
|
|
gPreviewSoundButton.disabled = false;
|
|
gIconCheckbox.disabled = false;
|
|
|
|
enableSoundUrl(gSoundCheckbox.checked);
|
|
}
|
|
}
|
|
|
|
function selectSound() {
|
|
var nsIFilePicker = Components.interfaces.nsIFilePicker;
|
|
var filepicker = Components.classes["@mozilla.org/filepicker;1"]
|
|
.createInstance(nsIFilePicker);
|
|
|
|
filepicker.init(window, document.getElementById("selectSound").getAttribute("filepickertitle"), nsIFilePicker.modeOpen);
|
|
filepicker.appendFilters(nsIFilePicker.filterAll);
|
|
|
|
var ret = filepicker.show();
|
|
if (ret == nsIFilePicker.returnOK)
|
|
gSoundUrlBox.value = filepicker.file.path;
|
|
|
|
onSoundInput();
|
|
}
|
|
|
|
function previewSound() {
|
|
var soundUrl = gSoundUrlBox.value;
|
|
var sound = Components.classes["@mozilla.org/sound;1"]
|
|
.createInstance(Components.interfaces.nsISound);
|
|
if (soundUrl.indexOf("file://") == -1) {
|
|
sound.playSystemSound(soundUrl);
|
|
}
|
|
else {
|
|
var url = Components.classes["@mozilla.org/network/standard-url;1"]
|
|
.createInstance(Components.interfaces.nsIURL);
|
|
url.spec = soundUrl;
|
|
sound.play(url)
|
|
}
|
|
}
|
|
|
|
function enableSoundUrl(soundChecked) {
|
|
gSoundUrlBox.disabled = !soundChecked;
|
|
gSoundUrlButton.disabled = !soundChecked;
|
|
if (soundChecked && gSoundUrlBox.value) {
|
|
gPreviewSoundButton.disabled = false;
|
|
}
|
|
else
|
|
gPreviewSoundButton.disabled = true;
|
|
}
|
|
|
|
function onSoundInput() {
|
|
gPreviewSoundButton.disabled = gSoundUrlBox.value == "";
|
|
}
|
|
|
|
]]>
|
|
</script>
|
|
|
|
<groupbox id="popupsArea">
|
|
<caption label="&pref.popups.caption;"/>
|
|
|
|
<hbox align="center">
|
|
<checkbox id="popupPolicy" label="&popupBlock.label;" accesskey="&popupBlock.accesskey;"
|
|
oncommand="setButtons()"
|
|
preftype="bool" prefstring="dom.disable_open_during_load"
|
|
prefattribute="checked"/>
|
|
<spacer flex="1"/>
|
|
<button id="exceptionsButton" label="&popupExceptions.label;"
|
|
accesskey="&popupExceptions.accesskey;"
|
|
oncommand="viewPopups('');"/>
|
|
</hbox>
|
|
<separator class="thin"/>
|
|
<description id="whenBlock">&whenBlock.description;</description>
|
|
<hbox align="center">
|
|
<checkbox id="playSound" label="&playSound.label;"
|
|
oncommand="enableSoundUrl(this.checked);"
|
|
preftype="bool" prefstring="privacy.popups.sound_enabled"
|
|
prefattribute="checked"/>
|
|
</hbox>
|
|
<hbox align="center">
|
|
<textbox flex="1" id="playSoundUrl"
|
|
prefstring="privacy.popups.sound_url" oninput="onSoundInput()"/>
|
|
<button id="selectSound" label="&selectSound.label;" accesskey="&selectSound.accesskey;"
|
|
filepickertitle="&selectSound.title;" oncommand="selectSound();"/>
|
|
<button id="previewSound" label="&previewSound.label;" accesskey="&previewSound.accesskey;"
|
|
oncommand="previewSound();"/>
|
|
</hbox>
|
|
<hbox align="center">
|
|
<checkbox id="displayIcon" label="&displayIcon.label;"
|
|
preftype="bool" prefstring="privacy.popups.statusbar_icon_enabled"
|
|
prefattribute="checked"/>
|
|
</hbox>
|
|
<separator class="thin"/>
|
|
<description>&popupNote.description;</description>
|
|
<data id="prefillWhitelist" preftype="bool" prefattribute="value" prefstring="privacy.popups.prefill_whitelist"/>
|
|
<data id="removeBlacklist" preftype="bool" prefattribute="value" prefstring="privacy.popups.remove_blacklist"/>
|
|
</groupbox>
|
|
|
|
</page>
|