mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-12 22:28:59 +02:00
The -*- file variable lines -*- establish per-file settings that Emacs will pick up. This patch makes the following changes to those lines (and touches nothing else): - Never set the buffer's mode. Years ago, Emacs did not have a good JavaScript mode, so it made sense to use Java or C++ mode in .js files. However, Emacs has had js-mode for years now; it's perfectly serviceable, and is available and enabled by default in all major Emacs packagings. Selecting a mode in the -*- file variable line -*- is almost always the wrong thing to do anyway. It overrides Emacs's default choice, which is (now) reasonable; and even worse, it overrides settings the user might have made in their '.emacs' file for that file extension. It's only useful when there's something specific about that particular file that makes a particular mode appropriate. - Correctly propagate settings that establish the correct indentation level for this file: c-basic-offset and js2-basic-offset should be js-indent-level. Whatever value they're given should be preserved; different parts of our tree use different indentation styles. - We don't use tabs in Mozilla JS code. Always set indent-tabs-mode: nil. Remove tab-width: settings, at least in files that don't contain tab characters. - Remove js2-mode settings that belong in the user's .emacs file, like js2-skip-preprocessor-directives.
203 lines
8.3 KiB
JavaScript
203 lines
8.3 KiB
JavaScript
// -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
|
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
const nsICookieAcceptDialog = Components.interfaces.nsICookieAcceptDialog;
|
|
const nsIDialogParamBlock = Components.interfaces.nsIDialogParamBlock;
|
|
const nsICookie = Components.interfaces.nsICookie;
|
|
const nsICookiePromptService = Components.interfaces.nsICookiePromptService;
|
|
|
|
Components.utils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
|
|
|
|
var params;
|
|
var cookieBundle;
|
|
var gDateService = null;
|
|
|
|
var showDetails = "";
|
|
var hideDetails = "";
|
|
var detailsAccessKey = "";
|
|
|
|
function onload()
|
|
{
|
|
doSetOKCancel(cookieAcceptNormal, cookieDeny, cookieAcceptSession);
|
|
|
|
var dialog = document.documentElement;
|
|
|
|
document.getElementById("Button2").collapsed = false;
|
|
|
|
document.getElementById("ok").label = dialog.getAttribute("acceptLabel");
|
|
document.getElementById("ok").accessKey = dialog.getAttribute("acceptKey");
|
|
document.getElementById("Button2").label = dialog.getAttribute("extra1Label");
|
|
document.getElementById("Button2").accessKey = dialog.getAttribute("extra1Key");
|
|
document.getElementById("cancel").label = dialog.getAttribute("cancelLabel");
|
|
document.getElementById("cancel").accessKey = dialog.getAttribute("cancelKey");
|
|
|
|
// hook up button icons where implemented
|
|
document.getElementById("ok").setAttribute("icon","accept");
|
|
document.getElementById("cancel").setAttribute("icon","cancel");
|
|
document.getElementById("disclosureButton").setAttribute("icon","properties");
|
|
|
|
if (!gDateService) {
|
|
const nsScriptableDateFormat_CONTRACTID = "@mozilla.org/intl/scriptabledateformat;1";
|
|
const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat;
|
|
gDateService = Components.classes[nsScriptableDateFormat_CONTRACTID]
|
|
.getService(nsIScriptableDateFormat);
|
|
}
|
|
|
|
cookieBundle = document.getElementById("cookieBundle");
|
|
|
|
//cache strings
|
|
if (!showDetails) {
|
|
showDetails = cookieBundle.getString('showDetails');
|
|
}
|
|
if (!hideDetails) {
|
|
hideDetails = cookieBundle.getString('hideDetails');
|
|
}
|
|
detailsAccessKey = cookieBundle.getString('detailsAccessKey');
|
|
|
|
if (document.getElementById('infobox').hidden) {
|
|
document.getElementById('disclosureButton').setAttribute("label",showDetails);
|
|
} else {
|
|
document.getElementById('disclosureButton').setAttribute("label",hideDetails);
|
|
}
|
|
document.getElementById('disclosureButton').setAttribute("accesskey",detailsAccessKey);
|
|
|
|
if ("arguments" in window && window.arguments.length >= 1 && window.arguments[0]) {
|
|
try {
|
|
params = window.arguments[0].QueryInterface(nsIDialogParamBlock);
|
|
var objects = params.objects;
|
|
var cookie = params.objects.queryElementAt(0,nsICookie);
|
|
var cookiesFromHost = params.GetInt(nsICookieAcceptDialog.COOKIESFROMHOST);
|
|
|
|
var messageFormat;
|
|
if (params.GetInt(nsICookieAcceptDialog.CHANGINGCOOKIE))
|
|
messageFormat = 'permissionToModifyCookie';
|
|
else if (cookiesFromHost > 1)
|
|
messageFormat = 'permissionToSetAnotherCookie';
|
|
else if (cookiesFromHost == 1)
|
|
messageFormat = 'permissionToSetSecondCookie';
|
|
else
|
|
messageFormat = 'permissionToSetACookie';
|
|
|
|
var hostname = params.GetString(nsICookieAcceptDialog.HOSTNAME);
|
|
|
|
var messageText;
|
|
if (cookie)
|
|
messageText = cookieBundle.getFormattedString(messageFormat,[hostname, cookiesFromHost]);
|
|
else
|
|
// No cookies means something went wrong. Bring up the dialog anyway
|
|
// to not make the mess worse.
|
|
messageText = cookieBundle.getFormattedString(messageFormat,["",cookiesFromHost]);
|
|
|
|
var messageParent = document.getElementById("dialogtextbox");
|
|
var messageParagraphs = messageText.split("\n");
|
|
|
|
// use value for the header, so it doesn't wrap.
|
|
var headerNode = document.getElementById("dialog-header");
|
|
headerNode.setAttribute("value",messageParagraphs[0]);
|
|
|
|
// use childnodes here, the text can wrap
|
|
for (var i = 1; i < messageParagraphs.length; i++) {
|
|
var descriptionNode = document.createElement("description");
|
|
text = document.createTextNode(messageParagraphs[i]);
|
|
descriptionNode.appendChild(text);
|
|
messageParent.appendChild(descriptionNode);
|
|
}
|
|
|
|
if (cookie) {
|
|
document.getElementById('ifl_name').setAttribute("value",cookie.name);
|
|
document.getElementById('ifl_value').setAttribute("value",cookie.value);
|
|
document.getElementById('ifl_host').setAttribute("value",cookie.host);
|
|
document.getElementById('ifl_path').setAttribute("value",cookie.path);
|
|
document.getElementById('ifl_isSecure').setAttribute("value",
|
|
cookie.isSecure ?
|
|
cookieBundle.getString("forSecureOnly") : cookieBundle.getString("forAnyConnection")
|
|
);
|
|
document.getElementById('ifl_expires').setAttribute("value",GetExpiresString(cookie.expires));
|
|
document.getElementById('ifl_isDomain').setAttribute("value",
|
|
cookie.isDomain ?
|
|
cookieBundle.getString("domainColon") : cookieBundle.getString("hostColon")
|
|
);
|
|
}
|
|
// set default result to not accept the cookie
|
|
params.SetInt(nsICookieAcceptDialog.ACCEPT_COOKIE, 0);
|
|
// and to not persist
|
|
params.SetInt(nsICookieAcceptDialog.REMEMBER_DECISION, 0);
|
|
} catch (e) {
|
|
}
|
|
}
|
|
|
|
// The Private Browsing service might not be available
|
|
try {
|
|
if (window.opener && PrivateBrowsingUtils.isWindowPrivate(window.opener)) {
|
|
var persistCheckbox = document.getElementById("persistDomainAcceptance");
|
|
persistCheckbox.removeAttribute("checked");
|
|
persistCheckbox.setAttribute("disabled", "true");
|
|
}
|
|
} catch (ex) {}
|
|
}
|
|
|
|
function showhideinfo()
|
|
{
|
|
var infobox=document.getElementById('infobox');
|
|
|
|
if (infobox.hidden) {
|
|
infobox.setAttribute("hidden","false");
|
|
document.getElementById('disclosureButton').setAttribute("label",hideDetails);
|
|
} else {
|
|
infobox.setAttribute("hidden","true");
|
|
document.getElementById('disclosureButton').setAttribute("label",showDetails);
|
|
}
|
|
sizeToContent();
|
|
}
|
|
|
|
function cookieAcceptNormal()
|
|
{
|
|
// accept the cookie normally
|
|
params.SetInt(nsICookieAcceptDialog.ACCEPT_COOKIE, nsICookiePromptService.ACCEPT_COOKIE);
|
|
// And remember that when needed
|
|
params.SetInt(nsICookieAcceptDialog.REMEMBER_DECISION, document.getElementById('persistDomainAcceptance').checked);
|
|
window.close();
|
|
}
|
|
|
|
function cookieAcceptSession()
|
|
{
|
|
// accept for the session only
|
|
params.SetInt(nsICookieAcceptDialog.ACCEPT_COOKIE, nsICookiePromptService.ACCEPT_SESSION_COOKIE);
|
|
// And remember that when needed
|
|
params.SetInt(nsICookieAcceptDialog.REMEMBER_DECISION, document.getElementById('persistDomainAcceptance').checked);
|
|
window.close();
|
|
}
|
|
|
|
function cookieDeny()
|
|
{
|
|
// say that the cookie was rejected
|
|
params.SetInt(nsICookieAcceptDialog.ACCEPT_COOKIE, nsICookiePromptService.DENY_COOKIE);
|
|
// And remember that when needed
|
|
params.SetInt(nsICookieAcceptDialog.REMEMBER_DECISION, document.getElementById('persistDomainAcceptance').checked);
|
|
window.close();
|
|
}
|
|
|
|
function GetExpiresString(secondsUntilExpires) {
|
|
if (secondsUntilExpires) {
|
|
var date = new Date(1000*secondsUntilExpires);
|
|
|
|
// if a server manages to set a really long-lived cookie, the dateservice
|
|
// can't cope with it properly, so we'll just return a blank string
|
|
// see bug 238045 for details
|
|
var expiry = "";
|
|
try {
|
|
expiry = gDateService.FormatDateTime("", gDateService.dateFormatLong,
|
|
gDateService.timeFormatSeconds,
|
|
date.getFullYear(), date.getMonth()+1,
|
|
date.getDate(), date.getHours(),
|
|
date.getMinutes(), date.getSeconds());
|
|
} catch(ex) {
|
|
// do nothing
|
|
}
|
|
return expiry;
|
|
}
|
|
return cookieBundle.getString("expireAtEndOfSession");
|
|
}
|