Bug 940907 Re-introduce the Character Encoding menu to the View Source window r=Unfocused

--HG--
rename : browser/locales/en-US/chrome/browser/charsetMenu.dtd => toolkit/locales/en-US/chrome/global/charsetMenu.dtd
rename : browser/locales/en-US/chrome/browser/charsetMenu.properties => toolkit/locales/en-US/chrome/global/charsetMenu.properties
rename : browser/modules/CharsetMenu.jsm => toolkit/modules/CharsetMenu.jsm
This commit is contained in:
Neil Rashbrook 2014-01-06 08:44:19 +00:00
Родитель acef910f4d
Коммит fbaa743e6a
12 изменённых файлов: 110 добавлений и 9 удалений

Просмотреть файл

@ -11,9 +11,9 @@
#endif
oncommand="MultiplexHandler(event)"
#ifdef OMIT_ACCESSKEYS
#expand onpopupshowing="CharsetMenu.build(event, '__ID_PREFIX__');"
#expand onpopupshowing="CharsetMenu.build(event, '__ID_PREFIX__', false);"
#else
#expand onpopupshowing="CharsetMenu.build(event, '__ID_PREFIX__', true);"
#expand onpopupshowing="CharsetMenu.build(event, '__ID_PREFIX__');"
#endif
onpopupshown="UpdateMenus(event);">
<menupopup>

Просмотреть файл

@ -5,7 +5,7 @@
%browserDTD;
<!ENTITY % baseMenuDTD SYSTEM "chrome://browser/locale/baseMenuOverlay.dtd" >
%baseMenuDTD;
<!ENTITY % charsetDTD SYSTEM "chrome://browser/locale/charsetMenu.dtd" >
<!ENTITY % charsetDTD SYSTEM "chrome://global/locale/charsetMenu.dtd" >
%charsetDTD;
<!ENTITY % textcontextDTD SYSTEM "chrome://global/locale/textcontext.dtd" >
%textcontextDTD;

Просмотреть файл

@ -14,7 +14,7 @@ Cu.import("resource://gre/modules/WindowsPrefSync.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Task",
"resource://gre/modules/Task.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "CharsetMenu",
"resource:///modules/CharsetMenu.jsm");
"resource://gre/modules/CharsetMenu.jsm");
const nsIWebNavigation = Ci.nsIWebNavigation;

Просмотреть файл

@ -23,8 +23,6 @@
locale/browser/browser.dtd (%chrome/browser/browser.dtd)
locale/browser/baseMenuOverlay.dtd (%chrome/browser/baseMenuOverlay.dtd)
locale/browser/browser.properties (%chrome/browser/browser.properties)
locale/browser/charsetMenu.properties (%chrome/browser/charsetMenu.properties)
locale/browser/charsetMenu.dtd (%chrome/browser/charsetMenu.dtd)
locale/browser/customizableui/customizableWidgets.properties (%chrome/browser/customizableui/customizableWidgets.properties)
locale/browser/devtools/appcacheutils.properties (%chrome/browser/devtools/appcacheutils.properties)
locale/browser/devtools/debugger.dtd (%chrome/browser/devtools/debugger.dtd)

Просмотреть файл

@ -9,7 +9,6 @@ TEST_DIRS += ['test']
EXTRA_JS_MODULES += [
'BrowserNewTabPreloader.jsm',
'BrowserUITelemetry.jsm',
'CharsetMenu.jsm',
'ContentClick.jsm',
'NetworkPrioritizer.jsm',
'offlineAppCache.jsm',

Просмотреть файл

@ -5,6 +5,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
Components.utils.import("resource://gre/modules/Services.jsm");
Components.utils.import("resource://gre/modules/CharsetMenu.jsm");
const Cc = Components.classes;
const Ci = Components.interfaces;
@ -662,6 +663,67 @@ function BrowserSetForcedCharacterSet(aCharset)
BrowserCharsetReload();
}
function MultiplexHandler(event)
{
var node = event.target;
var name = node.getAttribute("name");
if (name == "detectorGroup") {
SelectDetector(event);
BrowserCharsetReload();
} else if (name == "charsetGroup") {
var charset = node.getAttribute("id");
charset = charset.substring(charset.indexOf("charset.") + "charset.".length);
BrowserSetForcedCharacterSet(charset);
}
}
function SelectDetector(event)
{
var uri = event.target.getAttribute("id");
var prefvalue = uri.substring(uri.indexOf("chardet.") + "chardet.".length);
if ("off" == prefvalue) { // "off" is special value to turn off the detectors
prefvalue = "";
}
try {
var str = Cc["@mozilla.org/supports-string;1"].
createInstance(Ci.nsISupportsString);
str.data = prefvalue;
gPrefService.setComplexValue("intl.charset.detector", Ci.nsISupportsString, str);
}
catch (ex) {
dump("Failed to set the intl.charset.detector preference.\n");
}
}
function UpdateCurrentCharset() {
var menuitem = document.getElementById("charset." + content.document.characterSet);
if (menuitem)
menuitem.setAttribute("checked", "true");
}
function UpdateCharsetDetector() {
var prefvalue;
try {
prefvalue = gPrefService.getComplexValue("intl.charset.detector", Ci.nsIPrefLocalizedString).data;
}
catch (ex) {}
if (!prefvalue)
prefvalue = "off";
var menuitem = document.getElementById("chardet." + prefvalue);
if (menuitem)
menuitem.setAttribute("checked", "true");
}
function UpdateMenus() {
UpdateCurrentCharset();
UpdateCharsetDetector();
}
function BrowserForward(aEvent) {
try {
gBrowser.goForward();

Просмотреть файл

@ -14,6 +14,8 @@
%brandDTD;
<!ENTITY % sourceDTD SYSTEM "chrome://global/locale/viewSource.dtd" >
%sourceDTD;
<!ENTITY % charsetDTD SYSTEM "chrome://global/locale/charsetMenu.dtd" >
%charsetDTD;
]>
<window id="viewSource"
@ -194,6 +196,43 @@
key="key_textZoomReset"/>
</menupopup>
</menu>
<!-- Charset Menu -->
<menu id="charsetMenu"
label="&charsetMenu.label;"
accesskey="&charsetMenu.accesskey;"
oncommand="MultiplexHandler(event);"
onpopupshowing="CharsetMenu.build(event);"
onpopupshown="UpdateMenus();">
<menupopup>
<menu label="&charsetMenuAutodet.label;"
accesskey="&charsetMenuAutodet.accesskey;">
<menupopup>
<menuitem type="radio"
name="detectorGroup"
id="chardet.off"
label="&charsetMenuAutodet.off.label;"
accesskey="&charsetMenuAutodet.off.accesskey;"/>
<menuitem type="radio"
name="detectorGroup"
id="chardet.ja_parallel_state_machine"
label="&charsetMenuAutodet.ja.label;"
accesskey="&charsetMenuAutodet.ja.accesskey;"/>
<menuitem type="radio"
name="detectorGroup"
id="chardet.ruprob"
label="&charsetMenuAutodet.ru.label;"
accesskey="&charsetMenuAutodet.ru.accesskey;"/>
<menuitem type="radio"
name="detectorGroup"
id="chardet.ukprob"
label="&charsetMenuAutodet.uk.label;"
accesskey="&charsetMenuAutodet.uk.accesskey;"/>
</menupopup>
</menu>
<menuseparator/>
</menupopup>
</menu>
<menuseparator/>
<menuitem id="menu_wrapLongLines" type="checkbox" command="cmd_wrapLongLines"
label="&menu_wrapLongLines.title;" accesskey="&menu_wrapLongLines.accesskey;"/>

Просмотреть файл

@ -18,6 +18,8 @@
locale/@AB_CD@/global/appPicker.dtd (%chrome/global/appPicker.dtd)
locale/@AB_CD@/global/brand.dtd (generic/chrome/global/brand.dtd)
locale/@AB_CD@/global/browser.properties (%chrome/global/browser.properties)
locale/@AB_CD@/global/charsetMenu.dtd (%chrome/global/charsetMenu.dtd)
locale/@AB_CD@/global/charsetMenu.properties (%chrome/global/charsetMenu.properties)
locale/@AB_CD@/global/charsetOverlay.dtd (%chrome/global/charsetOverlay.dtd)
locale/@AB_CD@/global/commonDialog.dtd (%chrome/global/commonDialog.dtd)
locale/@AB_CD@/global/commonDialogs.properties (%chrome/global/commonDialogs.properties)

Просмотреть файл

@ -9,7 +9,7 @@ const { classes: Cc, interfaces: Ci, utils: Cu} = Components;
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyGetter(this, "gBundle", function() {
const kUrl = "chrome://browser/locale/charsetMenu.properties";
const kUrl = "chrome://global/locale/charsetMenu.properties";
return Services.strings.createBundle(kUrl);
});
/**
@ -81,7 +81,7 @@ const kPinned = [
];
this.CharsetMenu = Object.freeze({
build: function BuildCharsetMenu(event, idPrefix="", showAccessKeys=false) {
build: function BuildCharsetMenu(event, idPrefix="", showAccessKeys=true) {
let parent = event.target;
if (parent.lastChild.localName != "menuseparator") {
// Detector menu or charset menu already built

Просмотреть файл

@ -8,6 +8,7 @@ TEST_DIRS += ['tests']
EXTRA_JS_MODULES += [
'AsyncShutdown.jsm',
'CharsetMenu.jsm',
'debug.js',
'DeferredTask.jsm',
'Deprecated.jsm',