author | Henri Sivonen <hsivonen@hsivonen.fi> |
Mon, 04 Nov 2013 13:24:33 +0200 (2013-11-04) | |
changeset 153372 | bbf4142fb81eb5730f368b019cd49984dce35702 |
parent 153371 | ebf8b8bb71515cc6640eb28df96dcfff3d112644 |
child 153373 | d79a832a8cae25ba09942c27b8d9457dbfef21d2 |
push id | 25585 |
push user | ryanvm@gmail.com |
push date | Mon, 04 Nov 2013 21:17:29 +0000 (2013-11-04) |
treeherder | mozilla-central@3e4275a874d8 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | bzbarsky |
bugs | 910192 |
milestone | 28.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/browser/components/migration/src/SafariProfileMigrator.js +++ b/browser/components/migration/src/SafariProfileMigrator.js @@ -337,39 +337,16 @@ Preferences.prototype = { // Firefox has an elaborate set of Image preferences. The correlation is: // Mode: Safari Firefox // Blocked FALSE 2 // Allowed TRUE 1 // Allowed, originating site only -- 3 this._set("WebKitDisplayImagesKey", "permissions.default.image", function(webkitVal) webkitVal ? 1 : 2); - // Default charset migration - this._set("WebKitDefaultTextEncodingName", "intl.charset.default", - function(webkitCharset) { - // We don't support x-mac-korean (see bug 713516), but it mostly matches - // EUC-KR. - if (webkitCharset == "x-mac-korean") - return "EUC-KR"; - - // getCharsetAlias throws if an invalid value is passed in. - try { - return Cc["@mozilla.org/charset-converter-manager;1"]. - getService(Ci.nsICharsetConverterManager). - getCharsetAlias(webkitCharset); - } - catch(ex) { - Cu.reportError("Could not convert webkit charset '" + webkitCharset + - "' to a supported charset"); - } - // Don't set the preference if we could not get the corresponding - // charset. - return undefined; - }); - #ifdef XP_WIN // Cookie-accept policy. // For the OS X version, see WebFoundationCookieBehavior. // Setting Safari Firefox // Always Accept 0 0 // Accept from Originating 2 1 // Never Accept 1 2 this._set("WebKitCookieStorageAcceptPolicy",
--- a/content/html/document/src/nsHTMLDocument.cpp +++ b/content/html/document/src/nsHTMLDocument.cpp @@ -78,16 +78,17 @@ #include "nsArrayUtils.h" #include "nsIEffectiveTLDService.h" #include "nsIPrompt.h" //AHMED 12-2 #include "nsBidiUtils.h" #include "mozilla/dom/EncodingUtils.h" +#include "mozilla/dom/FallbackEncoding.h" #include "nsIEditingSession.h" #include "nsIEditor.h" #include "nsNodeInfoManager.h" #include "nsIPlaintextEditor.h" #include "nsIHTMLEditor.h" #include "nsIEditorStyleSheets.h" #include "nsIInlineSpellChecker.h" #include "nsRange.h" @@ -440,36 +441,23 @@ nsHTMLDocument::TryParentCharset(nsIDocS } aCharset.Assign(parentCharset); aCharsetSource = kCharsetFromParentFrame; } } void -nsHTMLDocument::TryWeakDocTypeDefault(int32_t& aCharsetSource, - nsACString& aCharset) +nsHTMLDocument::TryFallback(int32_t& aCharsetSource, nsACString& aCharset) { - if (kCharsetFromWeakDocTypeDefault <= aCharsetSource) + if (kCharsetFromFallback <= aCharsetSource) return; - const nsAdoptingCString& defCharset = - Preferences::GetLocalizedCString("intl.charset.default"); - - // Don't let the user break things by setting intl.charset.default to - // not a rough ASCII superset - nsAutoCString canonical; - if (EncodingUtils::FindEncodingForLabel(defCharset, canonical) && - EncodingUtils::IsAsciiCompatible(canonical)) { - aCharset = canonical; - } else { - aCharset.AssignLiteral("windows-1252"); - } - aCharsetSource = kCharsetFromWeakDocTypeDefault; - return; + aCharsetSource = kCharsetFromFallback; + FallbackEncoding::FromLocale(aCharset); } void nsHTMLDocument::SetDocumentCharacterSet(const nsACString& aCharSetID) { nsDocument::SetDocumentCharacterSet(aCharSetID); // Make sure to stash this charset on our channel as needed if it's a wyciwyg // channel. @@ -637,17 +625,17 @@ nsHTMLDocument::StartDocumentLoad(const // For error reporting nsHtml5TreeOpExecutor* executor = nullptr; if (loadAsHtml5) { executor = static_cast<nsHtml5TreeOpExecutor*> (mParser->GetContentSink()); } if (!IsHTML() || !docShell) { // no docshell for text/html XHR - charsetSource = IsHTML() ? kCharsetFromWeakDocTypeDefault + charsetSource = IsHTML() ? kCharsetFromFallback : kCharsetFromDocTypeDefault; charset.AssignLiteral("UTF-8"); TryChannelCharset(aChannel, charsetSource, charset, executor); parserCharsetSource = charsetSource; parserCharset = charset; } else { NS_ASSERTION(docShell, "Unexpected null value"); @@ -678,17 +666,17 @@ nsHTMLDocument::StartDocumentLoad(const TryHintCharset(muCV, charsetSource, charset); // XXX mailnews-only TryParentCharset(docShell, charsetSource, charset); if (cachingChan && !urlSpec.IsEmpty()) { TryCacheCharset(cachingChan, charsetSource, charset); } - TryWeakDocTypeDefault(charsetSource, charset); + TryFallback(charsetSource, charset); if (wyciwygChannel) { // We know for sure that the parser needs to be using UTF16. parserCharset = "UTF-16"; parserCharsetSource = charsetSource < kCharsetFromChannel ? kCharsetFromChannel : charsetSource; nsAutoCString cachedCharset;
--- a/content/html/document/src/nsHTMLDocument.h +++ b/content/html/document/src/nsHTMLDocument.h @@ -308,18 +308,17 @@ protected: nsIDocShell* aDocShell, int32_t& aCharsetSource, nsACString& aCharset); static void TryCacheCharset(nsICachingChannel* aCachingChannel, int32_t& aCharsetSource, nsACString& aCharset); void TryParentCharset(nsIDocShell* aDocShell, int32_t& charsetSource, nsACString& aCharset); - static void TryWeakDocTypeDefault(int32_t& aCharsetSource, - nsACString& aCharset); + static void TryFallback(int32_t& aCharsetSource, nsACString& aCharset); // Override so we can munge the charset on our wyciwyg channel as needed. virtual void SetDocumentCharacterSet(const nsACString& aCharSetID) MOZ_OVERRIDE; // Tracks if we are currently processing any document.write calls (either // implicit or explicit). Note that if a write call writes out something which // would block the parser, then mWriteLevel will be incorrect until the parser // finishes processing that script.
--- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -1891,17 +1891,17 @@ nsDocShell::GatherCharsetMenuTelemetry() bool isFileURL = false; nsIURI* url = doc->GetOriginalURI(); if (url) { url->SchemeIs("file", &isFileURL); } int32_t charsetSource = doc->GetDocumentCharacterSetSource(); switch (charsetSource) { - case kCharsetFromWeakDocTypeDefault: + case kCharsetFromFallback: case kCharsetFromDocTypeDefault: case kCharsetFromCache: case kCharsetFromParentFrame: case kCharsetFromHintPrevDoc: // Changing charset on an unlabeled doc. if (isFileURL) { Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 0); } else {
new file mode 100644 --- /dev/null +++ b/dom/encoding/FallbackEncoding.cpp @@ -0,0 +1,137 @@ +/* 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/. */ + +#include "mozilla/dom/FallbackEncoding.h" + +#include "mozilla/dom/EncodingUtils.h" +#include "nsUConvPropertySearch.h" +#include "nsIChromeRegistry.h" +#include "mozilla/Preferences.h" +#include "mozilla/Services.h" + +namespace mozilla { +namespace dom { + +static const char* localesFallbacks[][3] = { +#include "localesfallbacks.properties.h" +}; + +FallbackEncoding* FallbackEncoding::sInstance = nullptr; + +FallbackEncoding::FallbackEncoding() +{ + MOZ_COUNT_CTOR(FallbackEncoding); + MOZ_ASSERT(!FallbackEncoding::sInstance, + "Singleton already exists."); +} + +FallbackEncoding::~FallbackEncoding() +{ + MOZ_COUNT_DTOR(FallbackEncoding); +} + +void +FallbackEncoding::Get(nsACString& aFallback) +{ + if (!mFallback.IsEmpty()) { + aFallback = mFallback; + return; + } + + const nsAdoptingCString& override = + Preferences::GetCString("intl.charset.fallback.override"); + // Don't let the user break things by setting the override to unreasonable + // values via about:config + if (!EncodingUtils::FindEncodingForLabel(override, mFallback) || + !EncodingUtils::IsAsciiCompatible(mFallback) || + mFallback.EqualsLiteral("UTF-8")) { + mFallback.Truncate(); + } + + if (!mFallback.IsEmpty()) { + aFallback = mFallback; + return; + } + + nsAutoCString locale; + nsCOMPtr<nsIXULChromeRegistry> registry = + mozilla::services::GetXULChromeRegistryService(); + if (registry) { + registry->GetSelectedLocale(NS_LITERAL_CSTRING("global"), locale); + } + + // Let's lower case the string just in case unofficial language packs + // don't stick to conventions. + ToLowerCase(locale); // ASCII lowercasing with CString input! + + // Special case Traditional Chinese before throwing away stuff after the + // language itself. Today we only ship zh-TW, but be defensive about + // possible future values. + if (locale.EqualsLiteral("zh-tw") || + locale.EqualsLiteral("zh-hk") || + locale.EqualsLiteral("zh-mo") || + locale.EqualsLiteral("zh-hant")) { + mFallback.AssignLiteral("Big5"); + aFallback = mFallback; + return; + } + + // Throw away regions and other variants to accommodate weird stuff seen + // in telemetry--apparently unofficial language packs. + int32_t index = locale.FindChar('-'); + if (index >= 0) { + locale.Truncate(index); + } + + if (NS_FAILED(nsUConvPropertySearch::SearchPropertyValue( + localesFallbacks, ArrayLength(localesFallbacks), locale, mFallback))) { + mFallback.AssignLiteral("windows-1252"); + } + + aFallback = mFallback; +} + +void +FallbackEncoding::FromLocale(nsACString& aFallback) +{ + MOZ_ASSERT(FallbackEncoding::sInstance, + "Using uninitialized fallback cache."); + FallbackEncoding::sInstance->Get(aFallback); +} + +// PrefChangedFunc +int +FallbackEncoding::PrefChanged(const char*, void*) +{ + MOZ_ASSERT(FallbackEncoding::sInstance, + "Pref callback called with null fallback cache."); + FallbackEncoding::sInstance->Invalidate(); + return 0; +} + +void +FallbackEncoding::Initialize() +{ + MOZ_ASSERT(!FallbackEncoding::sInstance, + "Initializing pre-existing fallback cache."); + FallbackEncoding::sInstance = new FallbackEncoding; + Preferences::RegisterCallback(FallbackEncoding::PrefChanged, + "intl.charset.fallback.override", + nullptr); + Preferences::RegisterCallback(FallbackEncoding::PrefChanged, + "general.useragent.locale", + nullptr); +} + +void +FallbackEncoding::Shutdown() +{ + MOZ_ASSERT(FallbackEncoding::sInstance, + "Releasing non-existent fallback cache."); + delete FallbackEncoding::sInstance; + FallbackEncoding::sInstance = nullptr; +} + +} // namespace dom +} // namespace mozilla
new file mode 100644 --- /dev/null +++ b/dom/encoding/FallbackEncoding.h @@ -0,0 +1,72 @@ +/* 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/. */ + +#ifndef mozilla_dom_FallbackEncoding_h_ +#define mozilla_dom_FallbackEncoding_h_ + +#include "nsString.h" + +namespace mozilla { +namespace dom { + +class FallbackEncoding +{ +public: + + /** + * Gets the locale-dependent fallback encoding for legacy HTML and plain + * text content. + * + * @param aFallback the outparam for the fallback encoding + */ + static void FromLocale(nsACString& aFallback); + + // public API ends here! + + /** + * Allocate sInstance used by FromLocale(). + * To be called from nsLayoutStatics only. + */ + static void Initialize(); + + /** + * Delete sInstance used by FromLocale(). + * To be called from nsLayoutStatics only. + */ + static void Shutdown(); + +private: + + /** + * The fallback cache. + */ + static FallbackEncoding* sInstance; + + FallbackEncoding(); + ~FallbackEncoding(); + + /** + * Invalidates the cache. + */ + void Invalidate() + { + mFallback.Truncate(); + } + + static int PrefChanged(const char*, void*); + + /** + * Gets the fallback encoding label. + * @param aFallback the fallback encoding + */ + void Get(nsACString& aFallback); + + nsCString mFallback; +}; + +} // dom +} // mozilla + +#endif // mozilla_dom_FallbackEncoding_h_ +
--- a/dom/encoding/Makefile.in +++ b/dom/encoding/Makefile.in @@ -4,16 +4,20 @@ LOCAL_INCLUDES = \ -I$(topsrcdir)/intl/locale/src \ $(NULL) include $(topsrcdir)/config/rules.mk EncodingUtils.$(OBJ_SUFFIX): labelsencodings.properties.h +FallbackEncoding.$(OBJ_SUFFIX): localesfallbacks.properties.h PROPS2ARRAYS = $(topsrcdir)/intl/locale/src/props2arrays.py labelsencodings.properties.h: $(PROPS2ARRAYS) labelsencodings.properties $(PYTHON) $^ $@ +localesfallbacks.properties.h: $(PROPS2ARRAYS) localesfallbacks.properties + $(PYTHON) $^ $@ GARBAGE += \ - charsetalias.properties.h \ + labelsencodings.properties.h \ + localesfallbacks.properties.h \ $(NULL)
new file mode 100644 --- /dev/null +++ b/dom/encoding/localesfallbacks.properties @@ -0,0 +1,72 @@ +# 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/. + +# This file contains mappings from languages to legacy encodings for languages +# that are associated with legacy encoding other than windows-1252 (except +# Traditional Chinese, which is handled as a special case elsewhere). +# +# The keys are language codes without regions. The values are Gecko-canonical +# encoding labels (not necessarily lower case!). +# +# Rules: +# +# * Avoid editing this file! +# +# * If you do edit this file, be sure to file a spec bug against WHATWG HTML +# to keep this file in sync with +# http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#determining-the-character-encoding +# +# * As an exception to the previous rule, gbk is used instead of GB18030 +# until/unless work on http://encoding.spec.whatwg.org/ shows that the former +# can be treated as an alias of the latter and our decoder implementation +# has been audited to match the spec. +# +# * Use only the language code without a hyphen or anything that would come +# after the hyphen. +# +# * Don't put windows-1252-affiliated languages here. +# +# * Don't put Traditional Chinese here. + +ar=windows-1256 +# https://www.w3.org/Bugs/Public/show_bug.cgi?id=23089 +ba=windows-1251 +# https://www.w3.org/Bugs/Public/show_bug.cgi?id=23089 +be=windows-1251 +bg=windows-1251 +cs=windows-1250 +# https://www.w3.org/Bugs/Public/show_bug.cgi?id=23090 +el=ISO-8859-7 +et=windows-1257 +fa=windows-1256 +he=windows-1255 +hr=windows-1250 +hu=ISO-8859-2 +ja=Shift_JIS +# https://www.w3.org/Bugs/Public/show_bug.cgi?id=23089 +kk=windows-1251 +ko=EUC-KR +ku=windows-1254 +# https://www.w3.org/Bugs/Public/show_bug.cgi?id=23089 +ky=windows-1251 +lt=windows-1257 +lv=windows-1257 +# https://www.w3.org/Bugs/Public/show_bug.cgi?id=23089 +mk=windows-1251 +pl=ISO-8859-2 +ru=windows-1251 +# https://www.w3.org/Bugs/Public/show_bug.cgi?id=23089 +sah=windows-1251 +sk=windows-1250 +sl=ISO-8859-2 +sr=windows-1251 +# https://www.w3.org/Bugs/Public/show_bug.cgi?id=23089 +tg=windows-1251 +th=windows-874 +tr=windows-1254 +# https://www.w3.org/Bugs/Public/show_bug.cgi?id=23089 +tt=windows-1251 +uk=windows-1251 +vi=windows-1258 +zh=gbk
--- a/dom/encoding/moz.build +++ b/dom/encoding/moz.build @@ -5,22 +5,24 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. TEST_DIRS += ['test'] MODULE = 'dom' EXPORTS.mozilla.dom += [ 'EncodingUtils.h', + 'FallbackEncoding.h', 'TextDecoder.h', 'TextEncoder.h', ] SOURCES += [ 'EncodingUtils.cpp', + 'FallbackEncoding.cpp', 'TextDecoder.cpp', 'TextEncoder.cpp', ] FAIL_ON_WARNINGS = True LIBXUL_LIBRARY = True
--- a/extensions/universalchardet/tests/CharsetDetectionTests.js +++ b/extensions/universalchardet/tests/CharsetDetectionTests.js @@ -40,27 +40,19 @@ function InitDetectorTests() } catch (e) { gOldPref = ""; } SetDetectorPref(gDetectorList[0]); gTestIndex = 0; $("testframe").onload = DoDetectionTest; if (gExpectedCharset == "default") { - try { - gExpectedCharset = prefService - .getComplexValue("intl.charset.default", - Ci.nsIPrefLocalizedString) - .data; - if (gExpectedCharset == "ISO-8859-1") { - gExpectedCharset = "windows-1252"; - } - } catch (e) { - gExpectedCharset = "windows-1252"; - } + // No point trying to be generic here, because we have plenty of other + // unit tests that fail if run using a non-windows-1252 locale. + gExpectedCharset = "windows-1252"; } // Get the local directory. This needs to be a file: URI because chrome: // URIs are always UTF-8 (bug 617339) and we are testing decoding from other // charsets. var jar = getJar(getRootDirectory(window.location.href)); var dir = jar ? extractJarToTmp(jar) :
--- a/layout/build/nsLayoutStatics.cpp +++ b/layout/build/nsLayoutStatics.cpp @@ -45,16 +45,17 @@ #include "nsCellMap.h" #include "nsTextFrame.h" #include "nsCCUncollectableMarker.h" #include "nsTextFragment.h" #include "nsCSSRuleProcessor.h" #include "nsCrossSiteListenerProxy.h" #include "nsHTMLDNSPrefetch.h" #include "nsHtml5Module.h" +#include "mozilla/dom/FallbackEncoding.h" #include "nsFocusManager.h" #include "nsListControlFrame.h" #include "mozilla/dom/HTMLInputElement.h" #include "SVGElementFactory.h" #include "nsSVGUtils.h" #include "nsMathMLAtoms.h" #include "nsMathMLOperators.h" #include "Navigator.h" @@ -253,16 +254,17 @@ nsLayoutStatics::Initialize() return rv; } AsyncLatencyLogger::InitializeStatics(); AudioStream::InitLibrary(); nsContentSink::InitializeStatics(); nsHtml5Module::InitializeStatics(); + mozilla::dom::FallbackEncoding::Initialize(); nsLayoutUtils::Initialize(); nsIPresShell::InitializeStatics(); nsRefreshDriver::InitializeStatics(); nsCORSListenerProxy::Startup(); NS_SealStaticAtomTable(); @@ -379,16 +381,18 @@ nsLayoutStatics::Shutdown() nsCORSListenerProxy::Shutdown(); nsIPresShell::ReleaseStatics(); nsTreeSanitizer::ReleaseStatics(); nsHtml5Module::ReleaseStatics(); + mozilla::dom::FallbackEncoding::Shutdown(); + nsRegion::ShutdownStatic(); NS_ShutdownEventTargetChainRecycler(); HTMLInputElement::DestroyUploadLastDir(); nsLayoutUtils::Shutdown();
--- a/modules/libpref/src/init/all.js +++ b/modules/libpref/src/init/all.js @@ -1515,17 +1515,17 @@ pref("intl.charsetmenu.browser.more3", pref("intl.charsetmenu.browser.more4", "armscii-8, TIS-620, ISO-8859-11, windows-874, IBM857, ISO-8859-9, x-mac-turkish, windows-1254, x-viet-tcvn5712, VISCII, x-viet-vps, windows-1258, x-mac-devanagari, x-mac-gujarati, x-mac-gurmukhi"); pref("intl.charsetmenu.browser.more5", "ISO-8859-6, windows-1256, ISO-8859-8-I, windows-1255, ISO-8859-8, IBM862"); pref("intl.charsetmenu.mailedit", "chrome://global/locale/intl.properties"); pref("intl.charsetmenu.browser.cache", ""); pref("intl.charsetmenu.mailview.cache", ""); pref("intl.charsetmenu.composer.cache", ""); pref("intl.charsetmenu.browser.cache.size", 5); pref("intl.charset.detector", "chrome://global/locale/intl.properties"); -pref("intl.charset.default", "chrome://global-platform/locale/intl.properties"); +pref("intl.charset.fallback.override", ""); pref("intl.ellipsis", "chrome://global-platform/locale/intl.properties"); pref("intl.locale.matchOS", false); // fallback charset list for Unicode conversion (converting from Unicode) // currently used for mail send only to handle symbol characters (e.g Euro, trademark, smartquotes) // for ISO-8859-1 pref("intl.fallbackCharsetList.ISO-8859-1", "windows-1252"); pref("font.language.group", "chrome://global/locale/intl.properties");
--- a/netwerk/streamconv/converters/nsDirIndexParser.cpp +++ b/netwerk/streamconv/converters/nsDirIndexParser.cpp @@ -8,19 +8,17 @@ #include "mozilla/Util.h" #include "prprf.h" #include "nsDirIndexParser.h" #include "nsEscape.h" #include "nsIInputStream.h" #include "nsCRT.h" -#include "nsIPrefService.h" -#include "nsIPrefBranch.h" -#include "nsIPrefLocalizedString.h" +#include "mozilla/dom/FallbackEncoding.h" #include "nsITextToSubURI.h" #include "nsIDirIndex.h" #include "nsServiceManagerUtils.h" using namespace mozilla; NS_IMPL_ISUPPORTS3(nsDirIndexParser, nsIRequestObserver, @@ -30,34 +28,17 @@ NS_IMPL_ISUPPORTS3(nsDirIndexParser, nsDirIndexParser::nsDirIndexParser() { } nsresult nsDirIndexParser::Init() { mLineStart = 0; mHasDescription = false; mFormat = nullptr; - - // get default charset to be used for directory listings (fallback to - // ISO-8859-1 if pref is unavailable). - NS_NAMED_LITERAL_CSTRING(kFallbackEncoding, "ISO-8859-1"); - nsXPIDLString defCharset; - nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID)); - if (prefs) { - nsCOMPtr<nsIPrefLocalizedString> prefVal; - prefs->GetComplexValue("intl.charset.default", - NS_GET_IID(nsIPrefLocalizedString), - getter_AddRefs(prefVal)); - if (prefVal) - prefVal->ToString(getter_Copies(defCharset)); - } - if (!defCharset.IsEmpty()) - LossyCopyUTF16toASCII(defCharset, mEncoding); // charset labels are always ASCII - else - mEncoding.Assign(kFallbackEncoding); + mozilla::dom::FallbackEncoding::FromLocale(mEncoding); nsresult rv; // XXX not threadsafe if (gRefCntParser++ == 0) rv = CallGetService(NS_ITEXTTOSUBURI_CONTRACTID, &gTextToSubURI); else rv = NS_OK;
--- a/parser/html/nsHtml5StreamParser.cpp +++ b/parser/html/nsHtml5StreamParser.cpp @@ -297,17 +297,17 @@ nsHtml5StreamParser::SetupDecodingAndWri { NS_ASSERTION(IsParserThread(), "Wrong thread!"); nsresult rv = NS_OK; nsCOMPtr<nsICharsetConverterManager> convManager = do_GetService(NS_CHARSETCONVERTERMANAGER_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); rv = convManager->GetUnicodeDecoder(mCharset.get(), getter_AddRefs(mUnicodeDecoder)); if (rv == NS_ERROR_UCONV_NOCONV) { mCharset.AssignLiteral("windows-1252"); // lower case is the raw form - mCharsetSource = kCharsetFromWeakDocTypeDefault; + mCharsetSource = kCharsetFromFallback; rv = convManager->GetUnicodeDecoderRaw(mCharset.get(), getter_AddRefs(mUnicodeDecoder)); mTreeBuilder->SetDocumentCharset(mCharset, mCharsetSource); } NS_ENSURE_SUCCESS(rv, rv); return WriteSniffingBufferAndCurrentSegment(aFromSegment, aCount, aWriteCount); } nsresult @@ -607,20 +607,20 @@ nsHtml5StreamParser::FinalizeSniffing(co rv = mChardet->Done(); NS_ENSURE_SUCCESS(rv, rv); } // fall thru; callback may have changed charset } if (mCharsetSource == kCharsetUninitialized) { // Hopefully this case is never needed, but dealing with it anyway mCharset.AssignLiteral("windows-1252"); - mCharsetSource = kCharsetFromWeakDocTypeDefault; + mCharsetSource = kCharsetFromFallback; mTreeBuilder->SetDocumentCharset(mCharset, mCharsetSource); } else if (mMode == LOAD_AS_DATA && - mCharsetSource == kCharsetFromWeakDocTypeDefault) { + mCharsetSource == kCharsetFromFallback) { NS_ASSERTION(mReparseForbidden, "Reparse should be forbidden for XHR"); NS_ASSERTION(!mFeedChardet, "Should not feed chardet for XHR"); NS_ASSERTION(mCharset.EqualsLiteral("UTF-8"), "XHR should default to UTF-8"); // Now mark charset source as non-weak to signal that we have a decision mCharsetSource = kCharsetFromDocTypeDefault; mTreeBuilder->SetDocumentCharset(mCharset, mCharsetSource); } @@ -726,17 +726,17 @@ nsHtml5StreamParser::SniffStreamBytes(co mMetaScanner = nullptr; return WriteSniffingBufferAndCurrentSegment(aFromSegment, aCount, aWriteCount); } else { // nsHTMLDocument is supposed to make sure this does not happen. Let's // deal with this anyway, since who knows how kCharsetFromOtherComponent // is used. - mCharsetSource = kCharsetFromWeakDocTypeDefault; + mCharsetSource = kCharsetFromFallback; } } if (!mMetaScanner && (mMode == NORMAL || mMode == VIEW_SOURCE_HTML || mMode == LOAD_AS_DATA)) { mMetaScanner = new nsHtml5MetaScanner(); } @@ -976,17 +976,17 @@ nsHtml5StreamParser::OnStartRequest(nsIR // Instantiate the converter here to avoid BOM sniffing. nsCOMPtr<nsICharsetConverterManager> convManager = do_GetService(NS_CHARSETCONVERTERMANAGER_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); rv = convManager->GetUnicodeDecoder(mCharset.get(), getter_AddRefs(mUnicodeDecoder)); // if we failed to get a decoder, there will be fallback, so don't propagate // the error. if (NS_FAILED(rv)) { - mCharsetSource = kCharsetFromWeakDocTypeDefault; + mCharsetSource = kCharsetFromFallback; } return NS_OK; } NS_IMETHODIMP nsHtml5StreamParser::CheckListenerChain() { NS_ASSERTION(NS_IsMainThread(), "Should be on the main thread!");
--- a/parser/nsCharsetSource.h +++ b/parser/nsCharsetSource.h @@ -2,17 +2,17 @@ * 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/. */ #ifndef nsCharsetSource_h_ #define nsCharsetSource_h_ // note: the value order defines the priority; higher numbers take priority #define kCharsetUninitialized 0 -#define kCharsetFromWeakDocTypeDefault 1 +#define kCharsetFromFallback 1 #define kCharsetFromDocTypeDefault 2 // This and up confident for XHR #define kCharsetFromCache 3 #define kCharsetFromParentFrame 4 #define kCharsetFromAutoDetection 5 #define kCharsetFromHintPrevDoc 6 #define kCharsetFromMetaPrescan 7 // this one and smaller: HTML5 Tentative #define kCharsetFromMetaTag 8 // this one and greater: HTML5 Confident #define kCharsetFromIrreversibleAutoDetection 9
--- a/toolkit/components/search/nsSearchService.js +++ b/toolkit/components/search/nsSearchService.js @@ -559,17 +559,18 @@ function queryCharsetFromCode(aCode) { codes[2561] = "Shift_JIS"; codes[2562] = "KOI8-R"; codes[2563] = "Big5"; codes[2565] = "HZ-GB-2312"; if (codes[aCode]) return codes[aCode]; - return getLocalizedPref("intl.charset.default", DEFAULT_QUERY_CHARSET); + // Don't bother being fancy about what to return in the failure case. + return "windows-1252"; } function fileCharsetFromCode(aCode) { const codes = [ "macintosh", // 0 "Shift_JIS", // 1 "Big5", // 2 "EUC-KR", // 3 "X-MAC-ARABIC", // 4
--- a/toolkit/locales/en-US/chrome/global-platform/mac/intl.properties +++ b/toolkit/locales/en-US/chrome/global-platform/mac/intl.properties @@ -1,9 +1,7 @@ # 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/. -# moved from navigator/locale/navigator.properties -intl.charset.default=ISO-8859-1 # LOCALIZATION NOTE (intl.ellipsis): Use the unicode ellipsis char, \u2026, # or use "..." if \u2026 doesn't suit traditions in your locale. intl.ellipsis=…
--- a/toolkit/locales/en-US/chrome/global-platform/unix/intl.properties +++ b/toolkit/locales/en-US/chrome/global-platform/unix/intl.properties @@ -1,9 +1,7 @@ # 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/. -# moved from navigator/locale/navigator.properties -intl.charset.default=ISO-8859-1 # LOCALIZATION NOTE (intl.ellipsis): Use the unicode ellipsis char, \u2026, # or use "..." if \u2026 doesn't suit traditions in your locale. intl.ellipsis=…
--- a/toolkit/locales/en-US/chrome/global-platform/win/intl.properties +++ b/toolkit/locales/en-US/chrome/global-platform/win/intl.properties @@ -1,9 +1,7 @@ # 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/. -# moved from navigator/locale/navigator.properties -intl.charset.default=ISO-8859-1 # LOCALIZATION NOTE (intl.ellipsis): Use the unicode ellipsis char, \u2026, # or use "..." if \u2026 doesn't suit traditions in your locale. intl.ellipsis=…
--- a/toolkit/locales/en-US/chrome/global/intl.properties +++ b/toolkit/locales/en-US/chrome/global/intl.properties @@ -35,28 +35,27 @@ intl.accept_languages=en-US, en # LOCALIZATION NOTE (font.language.group): # This preference controls the initial setting of the language drop-down menu # in the Content > Fonts & Colors > Advanced preference panel. # # Set it to the value of one of the menuitems in the "selectLangs" menulist in # http://mxr.mozilla.org/mozilla/source/browser/components/preferences/fonts.xul font.language.group=x-western -# LOCALIZATION NOTE (intl.charset.detector, intl.charset.default, intl.charsetmenu.browser.static, intl.charsetmenu.mailedit): +# LOCALIZATION NOTE (intl.charset.detector, intl.charsetmenu.browser.static, intl.charsetmenu.mailedit): # For the list of canonical charset values, refer to: # http://mxr.mozilla.org/mozilla-central/source/intl/locale/src/charsetalias.properties # # If you are modifying the charset preferences for your locale, be sure to use # the values from that list, not the keys. Note that these values are # case-sensitive and must be reproduced exactly as listed. # # Note also that the list of charsets in 'intl.charsetmenu.browser.static' # must always include "UTF-8". intl.charset.detector= -intl.charset.default=ISO-8859-1 intl.charsetmenu.browser.static=ISO-8859-1, UTF-8 intl.charsetmenu.mailedit=ISO-8859-1, ISO-8859-15, ISO-8859-6, armscii-8, ISO-8859-13, ISO-8859-14, ISO-8859-2, GB2312, GB18030, Big5, KOI8-R, windows-1251, KOI8-U, ISO-8859-7, ISO-8859-8-I, windows-1255, ISO-2022-JP, EUC-KR, ISO-8859-10, ISO-8859-3, TIS-620, ISO-8859-9, UTF-8, VISCII # LOCALIZATION NOTE (pluralRule): Pick the appropriate plural rule for your # language. This will determine how many plural forms of a word you will need # to provide and in what order. # See: http://developer.mozilla.org/en/docs/Localization_and_Plurals pluralRule=1