diff --git a/extensions/pref/autoconfig/src/prefcalls.js b/extensions/pref/autoconfig/src/prefcalls.js index 74a36b482ace..1f0416c3052c 100644 --- a/extensions/pref/autoconfig/src/prefcalls.js +++ b/extensions/pref/autoconfig/src/prefcalls.js @@ -114,6 +114,12 @@ function getPref(prefName) { switch (prefBranch.getPrefType(prefName)) { case prefBranch.PREF_STRING: + if (gIsUTF8) { + const nsISupportsString = Components.interfaces.nsISupportsString; + let string = Components.classes["@mozilla.org/supports-string;1"] + .createInstance(nsISupportsString); + return prefBranch.getComplexValue(prefName, nsISupportsString).data; + } return prefBranch.getCharPref(prefName); case prefBranch.PREF_INT: diff --git a/extensions/pref/autoconfig/test/unit/autoconfig-latin1.cfg b/extensions/pref/autoconfig/test/unit/autoconfig-latin1.cfg index 688ef5458006..6b96c65fd05f 100644 --- a/extensions/pref/autoconfig/test/unit/autoconfig-latin1.cfg +++ b/extensions/pref/autoconfig/test/unit/autoconfig-latin1.cfg @@ -2,4 +2,5 @@ // © lockPref("_test.string.ASCII", "ASCII"); lockPref("_test.string.non-ASCII", "日本語"); +lockPref("_test.string.getPref", getPref("_test.string.non-ASCII")); lockPref("_test.string.gIsUTF8", String(this.gIsUTF8)); diff --git a/extensions/pref/autoconfig/test/unit/autoconfig-utf8.cfg b/extensions/pref/autoconfig/test/unit/autoconfig-utf8.cfg index 6a76dbf056c7..eec789942080 100644 --- a/extensions/pref/autoconfig/test/unit/autoconfig-utf8.cfg +++ b/extensions/pref/autoconfig/test/unit/autoconfig-utf8.cfg @@ -2,4 +2,5 @@ lockPref("_test.string.ASCII", "UTF-8"); lockPref("_test.string.non-ASCII", "日本語"); +lockPref("_test.string.getPref", getPref("_test.string.non-ASCII")); lockPref("_test.string.gIsUTF8", String(this.gIsUTF8)); diff --git a/extensions/pref/autoconfig/test/unit/test_autoconfig_nonascii.js b/extensions/pref/autoconfig/test/unit/test_autoconfig_nonascii.js index b0b4a213be30..a42bc1219ff7 100644 --- a/extensions/pref/autoconfig/test/unit/test_autoconfig_nonascii.js +++ b/extensions/pref/autoconfig/test/unit/test_autoconfig_nonascii.js @@ -31,6 +31,7 @@ function run_test() { prefs: { "_test.string.ASCII": "UTF-8", "_test.string.non-ASCII": "日本語", + "_test.string.getPref": "日本語", "_test.string.gIsUTF8": "true" } }, { @@ -38,6 +39,7 @@ function run_test() { prefs: { "_test.string.ASCII": "ASCII", "_test.string.non-ASCII": "日本語", + "_test.string.getPref": "日本語", "_test.string.gIsUTF8": "false", } }];