Bug 1712928 - Gather telemetry about encoding-unlabeled pages and about Repair Text Encoding usage situations. r=emk
In particular, gather telemetry to evaluate the impact of unlabeled UTF-8 and how detector-triggered reloads would change if ASCII-only at initial guess was treated as UTF-8. Differential Revision: https://phabricator.services.mozilla.com/D140818
This commit is contained in:
@@ -113,6 +113,7 @@
|
||||
#include "nsIDocShellTreeItem.h"
|
||||
#include "nsIDocShellTreeOwner.h"
|
||||
#include "mozilla/dom/Document.h"
|
||||
#include "nsHTMLDocument.h"
|
||||
#include "nsIDocumentLoaderFactory.h"
|
||||
#include "nsIDOMWindow.h"
|
||||
#include "nsIEditingSession.h"
|
||||
@@ -1655,91 +1656,132 @@ nsDocShell::ForceEncodingDetection() {
|
||||
|
||||
mForcedAutodetection = true;
|
||||
|
||||
LOGCHARSETMENU(("ENCODING_OVERRIDE_USED_AUTOMATIC"));
|
||||
Telemetry::ScalarSet(Telemetry::ScalarID::ENCODING_OVERRIDE_USED_AUTOMATIC,
|
||||
true);
|
||||
|
||||
nsIURI* url = doc->GetOriginalURI();
|
||||
bool isFileURL = url && SchemeIsFile(url);
|
||||
|
||||
int32_t charsetSource = doc->GetDocumentCharacterSetSource();
|
||||
auto encoding = doc->GetDocumentCharacterSet();
|
||||
switch (charsetSource) {
|
||||
case kCharsetFromInitialUserForcedAutoDetection:
|
||||
case kCharsetFromFinalUserForcedAutoDetection:
|
||||
LOGCHARSETMENU(("AutoOverridden"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::AutoOverridden);
|
||||
break;
|
||||
case kCharsetFromInitialAutoDetectionASCII:
|
||||
// Deliberately no final version
|
||||
LOGCHARSETMENU(("UnlabeledAscii"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::UnlabeledAscii);
|
||||
break;
|
||||
case kCharsetFromInitialAutoDetectionWouldNotHaveBeenUTF8Generic:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Generic:
|
||||
case kCharsetFromInitialAutoDetectionWouldNotHaveBeenUTF8Content:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Content:
|
||||
LOGCHARSETMENU(("UnlabeledNonUtf8"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::UnlabeledNonUtf8);
|
||||
break;
|
||||
case kCharsetFromInitialAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD:
|
||||
LOGCHARSETMENU(("UnlabeledNonUtf8TLD"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::UnlabeledNonUtf8TLD);
|
||||
break;
|
||||
case kCharsetFromInitialAutoDetectionWouldHaveBeenUTF8:
|
||||
case kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8:
|
||||
LOGCHARSETMENU(("UnlabeledUtf8"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::UnlabeledUtf8);
|
||||
break;
|
||||
case kCharsetFromChannel:
|
||||
if (encoding == UTF_8_ENCODING) {
|
||||
LOGCHARSETMENU(("ChannelUtf8"));
|
||||
// AsHTMLDocument is valid, because we called
|
||||
// WillIgnoreCharsetOverride() above.
|
||||
if (doc->AsHTMLDocument()->IsPlainText()) {
|
||||
switch (charsetSource) {
|
||||
case kCharsetFromInitialAutoDetectionASCII:
|
||||
// Deliberately no final version
|
||||
LOGCHARSETMENU(("TEXT:UnlabeledAscii"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::ChannelUtf8);
|
||||
} else {
|
||||
LOGCHARSETMENU(("ChannelNonUtf8"));
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_TEXT::UnlabeledAscii);
|
||||
break;
|
||||
case kCharsetFromInitialAutoDetectionWouldNotHaveBeenUTF8Generic:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Generic:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8GenericInitialWasASCII:
|
||||
case kCharsetFromInitialAutoDetectionWouldNotHaveBeenUTF8Content:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Content:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8ContentInitialWasASCII:
|
||||
LOGCHARSETMENU(("TEXT:UnlabeledNonUtf8"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::ChannelNonUtf8);
|
||||
}
|
||||
break;
|
||||
case kCharsetFromXmlDeclaration:
|
||||
case kCharsetFromMetaTag:
|
||||
if (isFileURL) {
|
||||
LOGCHARSETMENU(("LocalLabeled"));
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_TEXT::
|
||||
UnlabeledNonUtf8);
|
||||
break;
|
||||
case kCharsetFromInitialAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLDInitialWasASCII:
|
||||
LOGCHARSETMENU(("TEXT:UnlabeledNonUtf8TLD"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::LocalLabeled);
|
||||
} else if (encoding == UTF_8_ENCODING) {
|
||||
LOGCHARSETMENU(("MetaUtf8"));
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_TEXT::
|
||||
UnlabeledNonUtf8TLD);
|
||||
break;
|
||||
case kCharsetFromInitialAutoDetectionWouldHaveBeenUTF8:
|
||||
case kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8InitialWasASCII:
|
||||
LOGCHARSETMENU(("TEXT:UnlabeledUtf8"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::MetaUtf8);
|
||||
} else {
|
||||
LOGCHARSETMENU(("MetaNonUtf8"));
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_TEXT::UnlabeledUtf8);
|
||||
break;
|
||||
case kCharsetFromChannel:
|
||||
if (encoding == UTF_8_ENCODING) {
|
||||
LOGCHARSETMENU(("TEXT:ChannelUtf8"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_TEXT::ChannelUtf8);
|
||||
} else {
|
||||
LOGCHARSETMENU(("TEXT:ChannelNonUtf8"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_TEXT::
|
||||
ChannelNonUtf8);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LOGCHARSETMENU(("TEXT:Bug"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::MetaNonUtf8);
|
||||
}
|
||||
break;
|
||||
case kCharsetFromFinalAutoDetectionFile:
|
||||
if (isFileURL) {
|
||||
LOGCHARSETMENU(("LocalUnlabeled"));
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_TEXT::Bug);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (charsetSource) {
|
||||
case kCharsetFromInitialAutoDetectionASCII:
|
||||
// Deliberately no final version
|
||||
LOGCHARSETMENU(("HTML:UnlabeledAscii"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::LocalUnlabeled);
|
||||
} else {
|
||||
LOGCHARSETMENU(("Bug"));
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_HTML::UnlabeledAscii);
|
||||
break;
|
||||
case kCharsetFromInitialAutoDetectionWouldNotHaveBeenUTF8Generic:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Generic:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8GenericInitialWasASCII:
|
||||
case kCharsetFromInitialAutoDetectionWouldNotHaveBeenUTF8Content:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Content:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8ContentInitialWasASCII:
|
||||
LOGCHARSETMENU(("HTML:UnlabeledNonUtf8"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::Bug);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LOGCHARSETMENU(("Bug"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_2::Bug);
|
||||
break;
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_HTML::
|
||||
UnlabeledNonUtf8);
|
||||
break;
|
||||
case kCharsetFromInitialAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLDInitialWasASCII:
|
||||
LOGCHARSETMENU(("HTML:UnlabeledNonUtf8TLD"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_HTML::
|
||||
UnlabeledNonUtf8TLD);
|
||||
break;
|
||||
case kCharsetFromInitialAutoDetectionWouldHaveBeenUTF8:
|
||||
case kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8InitialWasASCII:
|
||||
LOGCHARSETMENU(("HTML:UnlabeledUtf8"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_HTML::UnlabeledUtf8);
|
||||
break;
|
||||
case kCharsetFromChannel:
|
||||
if (encoding == UTF_8_ENCODING) {
|
||||
LOGCHARSETMENU(("HTML:ChannelUtf8"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_HTML::ChannelUtf8);
|
||||
} else {
|
||||
LOGCHARSETMENU(("HTML:ChannelNonUtf8"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_HTML::
|
||||
ChannelNonUtf8);
|
||||
}
|
||||
break;
|
||||
case kCharsetFromXmlDeclaration:
|
||||
case kCharsetFromMetaTag:
|
||||
if (isFileURL) {
|
||||
LOGCHARSETMENU(("HTML:LocalLabeled"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_HTML::LocalLabeled);
|
||||
} else if (encoding == UTF_8_ENCODING) {
|
||||
LOGCHARSETMENU(("HTML:MetaUtf8"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_HTML::InternalUtf8);
|
||||
} else {
|
||||
LOGCHARSETMENU(("HTML:MetaNonUtf8"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_HTML::
|
||||
InternalNonUtf8);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LOGCHARSETMENU(("HTML:Bug"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_OVERRIDE_SITUATION_HTML::Bug);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -675,7 +675,7 @@ bool nsHTMLDocument::WillIgnoreCharsetOverride() {
|
||||
case kCharsetFromDocTypeDefault:
|
||||
case kCharsetFromInitialAutoDetectionWouldHaveBeenUTF8:
|
||||
case kCharsetFromInitialAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD:
|
||||
case kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8:
|
||||
case kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8InitialWasASCII:
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD:
|
||||
case kCharsetFromParentFrame:
|
||||
case kCharsetFromXmlDeclaration:
|
||||
|
||||
@@ -2586,9 +2586,10 @@ nsDocumentViewer::SetReloadEncodingAndSource(const Encoding* aEncoding,
|
||||
int32_t aSource) {
|
||||
MOZ_ASSERT(
|
||||
aSource == kCharsetUninitialized ||
|
||||
(aSource >= kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8 &&
|
||||
(aSource >=
|
||||
kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8InitialWasASCII &&
|
||||
aSource <=
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD) ||
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLDInitialWasASCII) ||
|
||||
aSource == kCharsetFromFinalUserForcedAutoDetection);
|
||||
mReloadEncoding = aEncoding;
|
||||
mReloadEncodingSource = aSource;
|
||||
|
||||
@@ -239,7 +239,6 @@ nsHtml5StreamParser::nsHtml5StreamParser(nsHtml5TreeOpExecutor* aExecutor,
|
||||
mInitialEncodingWasFromParentFrame(false),
|
||||
mHasHadErrors(false),
|
||||
mDetectorHasSeenNonAscii(false),
|
||||
mDetectorHadOnlySeenAsciiWhenFirstGuessing(false),
|
||||
mDecodingLocalFileWithoutTokenizing(false),
|
||||
mBufferingBytes(false),
|
||||
mFlushTimer(NS_NewTimer(mEventTarget)),
|
||||
@@ -290,20 +289,22 @@ nsresult nsHtml5StreamParser::GetChannel(nsIChannel** aChannel) {
|
||||
|
||||
std::tuple<NotNull<const Encoding*>, nsCharsetSource>
|
||||
nsHtml5StreamParser::GuessEncoding(bool aInitial) {
|
||||
if (aInitial) {
|
||||
if (!mDetectorHasSeenNonAscii) {
|
||||
mDetectorHadOnlySeenAsciiWhenFirstGuessing = true;
|
||||
}
|
||||
}
|
||||
MOZ_ASSERT(
|
||||
mCharsetSource != kCharsetFromFinalUserForcedAutoDetection &&
|
||||
mCharsetSource != kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8 &&
|
||||
mCharsetSource !=
|
||||
kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8InitialWasASCII &&
|
||||
mCharsetSource !=
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Generic &&
|
||||
mCharsetSource !=
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8GenericInitialWasASCII &&
|
||||
mCharsetSource !=
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Content &&
|
||||
mCharsetSource !=
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8ContentInitialWasASCII &&
|
||||
mCharsetSource !=
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD &&
|
||||
mCharsetSource !=
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLDInitialWasASCII &&
|
||||
mCharsetSource != kCharsetFromFinalAutoDetectionFile);
|
||||
auto ifHadBeenForced = mDetector->Guess(EmptyCString(), true);
|
||||
auto encoding =
|
||||
@@ -330,13 +331,28 @@ nsHtml5StreamParser::GuessEncoding(bool aInitial) {
|
||||
} else if (!mDetectorHasSeenNonAscii) {
|
||||
source = kCharsetFromInitialAutoDetectionASCII; // deliberately Initial
|
||||
} else if (ifHadBeenForced == UTF_8_ENCODING) {
|
||||
// XXX subdivide by mDetectorHadOnlySeenAsciiWhenFirstGuessing in
|
||||
// follow-up Not doing now to scope down the telemetry data review.
|
||||
source = kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8;
|
||||
MOZ_ASSERT(mCharsetSource == kCharsetFromInitialAutoDetectionASCII ||
|
||||
mCharsetSource ==
|
||||
kCharsetFromInitialAutoDetectionWouldHaveBeenUTF8);
|
||||
source = kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8InitialWasASCII;
|
||||
} else if (encoding != ifHadBeenForced) {
|
||||
source = kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD;
|
||||
if (mCharsetSource == kCharsetFromInitialAutoDetectionASCII) {
|
||||
source =
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLDInitialWasASCII;
|
||||
} else {
|
||||
source =
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD;
|
||||
}
|
||||
} else if (EncodingDetector::TldMayAffectGuess(mTLD)) {
|
||||
source = kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Content;
|
||||
if (mCharsetSource == kCharsetFromInitialAutoDetectionASCII) {
|
||||
source =
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8ContentInitialWasASCII;
|
||||
} else {
|
||||
source = kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Content;
|
||||
}
|
||||
} else if (mCharsetSource == kCharsetFromInitialAutoDetectionASCII) {
|
||||
source =
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8GenericInitialWasASCII;
|
||||
}
|
||||
} else if (source ==
|
||||
kCharsetFromInitialAutoDetectionWouldNotHaveBeenUTF8Generic) {
|
||||
@@ -485,7 +501,8 @@ nsresult nsHtml5StreamParser::SniffStreamBytes(Span<const uint8_t> aFromSegment,
|
||||
MOZ_ASSERT(IsParserThread(), "Wrong thread!");
|
||||
MOZ_ASSERT_IF(aEof, aFromSegment.IsEmpty());
|
||||
|
||||
if (mCharsetSource >= kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8 &&
|
||||
if (mCharsetSource >=
|
||||
kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8InitialWasASCII &&
|
||||
mCharsetSource <= kCharsetFromFinalUserForcedAutoDetection) {
|
||||
if (mMode == PLAIN_TEXT || mMode == VIEW_SOURCE_PLAIN) {
|
||||
mTreeBuilder->MaybeComplainAboutCharset("EncDetectorReloadPlain", true,
|
||||
@@ -2273,9 +2290,9 @@ void nsHtml5StreamParser::ParseAvailableData() {
|
||||
// Request a reload from the docshell.
|
||||
MOZ_ASSERT(
|
||||
(source >=
|
||||
kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8 &&
|
||||
kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8InitialWasASCII &&
|
||||
source <=
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD) ||
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLDInitialWasASCII) ||
|
||||
source == kCharsetFromFinalUserForcedAutoDetection);
|
||||
mTreeBuilder->NeedsCharsetSwitchTo(encoding, source, 0);
|
||||
requestedReload = true;
|
||||
@@ -2323,7 +2340,7 @@ void nsHtml5StreamParser::ParseAvailableData() {
|
||||
} else if (
|
||||
mCharsetSource >= kCharsetFromXmlDeclaration &&
|
||||
!(mCharsetSource >=
|
||||
kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8 &&
|
||||
kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8InitialWasASCII &&
|
||||
mCharsetSource <=
|
||||
kCharsetFromFinalUserForcedAutoDetection)) {
|
||||
mTreeBuilder->MaybeComplainAboutCharset("EncError", true, 0);
|
||||
|
||||
@@ -711,8 +711,6 @@ class nsHtml5StreamParser final : public nsISupports {
|
||||
|
||||
bool mDetectorHasSeenNonAscii;
|
||||
|
||||
bool mDetectorHadOnlySeenAsciiWhenFirstGuessing;
|
||||
|
||||
/**
|
||||
* If true, we are decoding a local file that lacks an encoding
|
||||
* declaration and we are not tokenizing yet.
|
||||
|
||||
@@ -297,8 +297,7 @@ nsHtml5TreeOpExecutor::DidBuildModel(bool aTerminated) {
|
||||
Telemetry::LABELS_ENCODING_DETECTION_OUTCOME_HTML::TldInitial);
|
||||
}
|
||||
break;
|
||||
// Deliberately no final version of ASCII
|
||||
case kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8:
|
||||
case kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8InitialWasASCII:
|
||||
if (plain) {
|
||||
LOGCHARDETNG(("TEXT::UtfFinal"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
@@ -322,6 +321,19 @@ nsHtml5TreeOpExecutor::DidBuildModel(bool aTerminated) {
|
||||
GenericFinal);
|
||||
}
|
||||
break;
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8GenericInitialWasASCII:
|
||||
if (plain) {
|
||||
LOGCHARDETNG(("TEXT::GenericFinalA"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_DETECTION_OUTCOME_TEXT::
|
||||
GenericFinalA);
|
||||
} else {
|
||||
LOGCHARDETNG(("HTML::GenericFinalA"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_DETECTION_OUTCOME_HTML::
|
||||
GenericFinalA);
|
||||
}
|
||||
break;
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Content:
|
||||
if (plain) {
|
||||
LOGCHARDETNG(("TEXT::ContentFinal"));
|
||||
@@ -335,6 +347,19 @@ nsHtml5TreeOpExecutor::DidBuildModel(bool aTerminated) {
|
||||
ContentFinal);
|
||||
}
|
||||
break;
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8ContentInitialWasASCII:
|
||||
if (plain) {
|
||||
LOGCHARDETNG(("TEXT::ContentFinalA"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_DETECTION_OUTCOME_TEXT::
|
||||
ContentFinalA);
|
||||
} else {
|
||||
LOGCHARDETNG(("HTML::ContentFinalA"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_DETECTION_OUTCOME_HTML::
|
||||
ContentFinalA);
|
||||
}
|
||||
break;
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD:
|
||||
if (plain) {
|
||||
LOGCHARDETNG(("TEXT::TldFinal"));
|
||||
@@ -346,6 +371,17 @@ nsHtml5TreeOpExecutor::DidBuildModel(bool aTerminated) {
|
||||
Telemetry::LABELS_ENCODING_DETECTION_OUTCOME_HTML::TldFinal);
|
||||
}
|
||||
break;
|
||||
case kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLDInitialWasASCII:
|
||||
if (plain) {
|
||||
LOGCHARDETNG(("TEXT::TldFinalA"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_DETECTION_OUTCOME_TEXT::TldFinalA);
|
||||
} else {
|
||||
LOGCHARDETNG(("HTML::TldFinalA"));
|
||||
Telemetry::AccumulateCategorical(
|
||||
Telemetry::LABELS_ENCODING_DETECTION_OUTCOME_HTML::TldFinalA);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// Chardetng didn't run automatically or the input was all ASCII.
|
||||
break;
|
||||
|
||||
@@ -27,10 +27,13 @@ enum nsCharsetSource {
|
||||
kCharsetFromInitialUserForcedAutoDetection,
|
||||
// Start subdividing source for telemetry purposes
|
||||
// Deliberately no Final version of ASCII
|
||||
kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8,
|
||||
kCharsetFromFinalAutoDetectionWouldHaveBeenUTF8InitialWasASCII,
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Generic,
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8GenericInitialWasASCII,
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8Content,
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8ContentInitialWasASCII,
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLD,
|
||||
kCharsetFromFinalAutoDetectionWouldNotHaveBeenUTF8DependedOnTLDInitialWasASCII,
|
||||
kCharsetFromFinalAutoDetectionFile,
|
||||
// End subdividing source for telemetry purposes
|
||||
kCharsetFromFinalUserForcedAutoDetection,
|
||||
|
||||
@@ -8817,37 +8817,48 @@
|
||||
"releaseChannelCollection": "opt-out",
|
||||
"description": "Number of HTML editors a node in the window has been observed by mutation observers, but has not had beforeinput event listeners"
|
||||
},
|
||||
"ENCODING_OVERRIDE_SITUATION_2": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"ENCODING_OVERRIDE_SITUATION_TEXT": {
|
||||
"record_in_processes": ["content"],
|
||||
"products": ["firefox"],
|
||||
"alert_emails": ["hsivonen@mozilla.com"],
|
||||
"bug_numbers": [840476, 977573, 1513473, 1554592, 1603047, 1648464, 1686463, 1706838],
|
||||
"expires_in_version": "96",
|
||||
"bug_numbers": [840476, 977573, 1513473, 1554592, 1603047, 1648464, 1686463, 1706838, 1712928],
|
||||
"expires_in_version": "106",
|
||||
"releaseChannelCollection": "opt-out",
|
||||
"kind": "categorical",
|
||||
"labels": ["AutoOverridden", "ManuallyOverridden", "LocalLabeled", "LocalUnlabeled", "UnlabeledInLk", "UnlabeledJp", "UnlabeledNonUtf8", "UnlabeledUtf8", "ChannelNonUtf8", "ChannelUtf8", "MetaNonUtf8", "MetaUtf8", "Bug", "UnlabeledAscii", "UnlabeledNonUtf8TLD"],
|
||||
"description": "Labeling status of top-level page when overriding encoding"
|
||||
"labels": ["UnlabeledAscii", "UnlabeledNonUtf8TLD", "UnlabeledNonUtf8", "UnlabeledUtf8", "ChannelNonUtf8", "ChannelUtf8", "Bug"],
|
||||
"description": "Labeling status of top-level page when overriding encoding for plain text"
|
||||
},
|
||||
"ENCODING_OVERRIDE_SITUATION_HTML": {
|
||||
"record_in_processes": ["content"],
|
||||
"products": ["firefox"],
|
||||
"alert_emails": ["hsivonen@mozilla.com"],
|
||||
"bug_numbers": [840476, 977573, 1513473, 1554592, 1603047, 1648464, 1686463, 1706838, 1712928],
|
||||
"expires_in_version": "106",
|
||||
"releaseChannelCollection": "opt-out",
|
||||
"kind": "categorical",
|
||||
"labels": ["UnlabeledAscii", "UnlabeledNonUtf8TLD", "UnlabeledNonUtf8", "UnlabeledUtf8", "ChannelNonUtf8", "ChannelUtf8", "InternalNonUtf8", "InternalUtf8", "LocalLabeled", "Bug"],
|
||||
"description": "Labeling status of top-level page when overriding encoding for HTML"
|
||||
},
|
||||
"ENCODING_DETECTION_OUTCOME_TEXT": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"record_in_processes": ["content"],
|
||||
"products": ["firefox"],
|
||||
"alert_emails": ["hsivonen@mozilla.com"],
|
||||
"bug_numbers": [1686463, 1702248, 1706838],
|
||||
"expires_in_version": "96",
|
||||
"bug_numbers": [1686463, 1702248, 1706838, 1712928],
|
||||
"expires_in_version": "106",
|
||||
"releaseChannelCollection": "opt-out",
|
||||
"kind": "categorical",
|
||||
"labels": ["UtfInitial", "UtfFinal", "TldInitial", "TldFinal", "ContentInitial", "ContentFinal", "GenericInitial", "GenericFinal"],
|
||||
"labels": ["UtfInitial", "UtfFinal", "TldInitial", "TldFinal", "ContentInitial", "ContentFinal", "GenericInitial", "GenericFinal", "TldFinalA", "ContentFinalA", "GenericFinalA"],
|
||||
"description": "Type of automatic encoding detection outcome for text/plain excluding ASCII-only"
|
||||
},
|
||||
"ENCODING_DETECTION_OUTCOME_HTML": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"record_in_processes": ["content"],
|
||||
"products": ["firefox"],
|
||||
"alert_emails": ["hsivonen@mozilla.com"],
|
||||
"bug_numbers": [1686463, 1702248, 1706838],
|
||||
"expires_in_version": "96",
|
||||
"bug_numbers": [1686463, 1702248, 1706838, 1712928],
|
||||
"expires_in_version": "106",
|
||||
"releaseChannelCollection": "opt-out",
|
||||
"kind": "categorical",
|
||||
"labels": ["UtfInitial", "UtfFinal", "TldInitial", "TldFinal", "ContentInitial", "ContentFinal", "GenericInitial", "GenericFinal"],
|
||||
"labels": ["UtfInitial", "UtfFinal", "TldInitial", "TldFinal", "ContentInitial", "ContentFinal", "GenericInitial", "GenericFinal", "TldFinalA", "ContentFinalA", "GenericFinalA"],
|
||||
"description": "Type of automatic encoding detection outcome for text/html excluding ASCII-only"
|
||||
},
|
||||
"LONG_REFLOW_INTERRUPTIBLE": {
|
||||
|
||||
@@ -5745,45 +5745,6 @@ browser.searchinit:
|
||||
- 'main'
|
||||
release_channel_collection: opt-out
|
||||
|
||||
encoding:
|
||||
override_used_manual:
|
||||
bug_numbers:
|
||||
- 840476
|
||||
- 1513473
|
||||
- 1554592
|
||||
- 1603047
|
||||
- 1648464
|
||||
- 1706838
|
||||
description: >-
|
||||
Whether an item other than Automatic in the Text Encoding menu was used to override an encoding in this subsession.
|
||||
expires: "96"
|
||||
kind: boolean
|
||||
notification_emails:
|
||||
- hsivonen@mozilla.com
|
||||
release_channel_collection: opt-out
|
||||
products:
|
||||
- 'firefox'
|
||||
record_in_processes:
|
||||
- main
|
||||
- content
|
||||
|
||||
override_used_automatic:
|
||||
bug_numbers:
|
||||
- 1648464
|
||||
- 1706838
|
||||
description: >-
|
||||
Whether the item Automatic in the Text Encoding menu was used to override an encoding in this subsession.
|
||||
expires: "96"
|
||||
kind: boolean
|
||||
notification_emails:
|
||||
- hsivonen@mozilla.com
|
||||
release_channel_collection: opt-out
|
||||
products:
|
||||
- 'firefox'
|
||||
record_in_processes:
|
||||
- main
|
||||
- content
|
||||
|
||||
startup:
|
||||
profile_selection_reason:
|
||||
bug_numbers:
|
||||
|
||||
Reference in New Issue
Block a user