зеркало из https://github.com/mozilla/pjs.git
fix for bug #244279
Enabling popup blocking from About Popups fails to set the preference. thanks to neil for the fix. r=mconnor, sr=dveditz
This commit is contained in:
Родитель
7fb5d42810
Коммит
6b67dc7e1d
|
@ -1,257 +0,0 @@
|
|||
<?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://cookie/locale/pref-popups.dtd" >
|
||||
%prefPopupsDTD;
|
||||
]>
|
||||
|
||||
<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
id="popupsPanel"
|
||||
onload="init()"
|
||||
headertitle="&title;">
|
||||
|
||||
<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 init() {
|
||||
parent.initPanel("chrome://cookie/content/pref-popups.xul");
|
||||
|
||||
permissionManager = Components.classes["@mozilla.org/permissionmanager;1"]
|
||||
.getService(Components.interfaces.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.window.opener.location) // opened from About Popups menuitem
|
||||
gPolicyCheckbox.checked = true;
|
||||
|
||||
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 = 0; i < hosts.length; i++) {
|
||||
permissionManager.remove(hosts[i], popupType);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function loadWhitelist() {
|
||||
try {
|
||||
var whitelist;
|
||||
var hosts;
|
||||
var prefService = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefService);
|
||||
var prefs = prefService.getBranch(null);
|
||||
whitelist = prefs.getComplexValue("privacy.popups.default_whitelist",
|
||||
Components.interfaces.nsIPrefLocalizedString).data;
|
||||
hosts = whitelist.split(",");
|
||||
|
||||
for (var i = 0; i < hosts.length; i++) {
|
||||
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 == "";
|
||||
}
|
||||
|
||||
function viewPopups() {
|
||||
window.openDialog("chrome://communicator/content/popupManager.xul", "",
|
||||
"chrome,resizable=yes", "");
|
||||
}
|
||||
|
||||
]]>
|
||||
</script>
|
||||
|
||||
<groupbox id="popupsArea">
|
||||
<caption label="&popupBlocking.label;"/>
|
||||
|
||||
<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>
|
|
@ -45,7 +45,7 @@
|
|||
|
||||
<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
id="popupsPanel"
|
||||
onload="init()"
|
||||
onload="parent.initPanel('chrome://cookie/content/pref-popups.xul');"
|
||||
headertitle="&title;">
|
||||
|
||||
<script type="application/x-javascript">
|
||||
|
@ -66,9 +66,7 @@
|
|||
var permissionManager;
|
||||
var ioService;
|
||||
|
||||
function init() {
|
||||
parent.initPanel("chrome://cookie/content/pref-popups.xul");
|
||||
|
||||
function Startup() {
|
||||
permissionManager = Components.classes["@mozilla.org/permissionmanager;1"]
|
||||
.getService(Components.interfaces.nsIPermissionManager);
|
||||
|
||||
|
@ -94,8 +92,11 @@
|
|||
document.getElementById("prefillWhitelist").setAttribute("value", false);
|
||||
}
|
||||
|
||||
if (!parent.window.opener.location) // opened from About Popups menuitem
|
||||
if (parent.queuedTag == "chrome://cookie/content/pref-popups.xul") {
|
||||
// opened from About Popups menuitem
|
||||
gPolicyCheckbox.checked = true;
|
||||
parent.queuedTag = null;
|
||||
}
|
||||
|
||||
setButtons();
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче