| Index: third_party/WebKit/Source/web/WebViewImpl.cpp
|
| diff --git a/third_party/WebKit/Source/web/WebViewImpl.cpp b/third_party/WebKit/Source/web/WebViewImpl.cpp
|
| index f0b52156a097b64d3bc91f5541a8ebd9d36d913d..4139f1e6be9e451384a6056e339810459daafa64 100644
|
| --- a/third_party/WebKit/Source/web/WebViewImpl.cpp
|
| +++ b/third_party/WebKit/Source/web/WebViewImpl.cpp
|
| @@ -323,6 +323,69 @@ private:
|
| WebColor m_color;
|
| };
|
|
|
| +#if OS(ANDROID)
|
| +// Array used to convert canonical encoding method name to index to be
|
| +// uploaded to UMA for the experiment on text encoding auto detection.
|
| +// The listed order should be in sync with the enum definition 'EncodingMethod'
|
| +// in tools/metrics/histograms/histograms.xml.
|
| +static const char* kEncodingNames[] = {
|
| + "UNKNOWN",
|
| + "Big5",
|
| + "EUC-JP",
|
| + "EUC-KR",
|
| + "GBK",
|
| + "IBM866",
|
| + "ISO-2022-JP",
|
| + "ISO-8859-10",
|
| + "ISO-8859-13",
|
| + "ISO-8859-14",
|
| + "ISO-8859-15",
|
| + "ISO-8859-16",
|
| + "ISO-8859-2",
|
| + "ISO-8859-3",
|
| + "ISO-8859-4",
|
| + "ISO-8859-5",
|
| + "ISO-8859-6",
|
| + "ISO-8859-7",
|
| + "ISO-8859-8",
|
| + "ISO-8859-8-I",
|
| + "KOI8-R",
|
| + "KOI8-U",
|
| + "Shift_JIS",
|
| + "UTF-16LE",
|
| + "UTF-8",
|
| + "gb18030",
|
| + "macintosh",
|
| + "windows-1250",
|
| + "windows-1251",
|
| + "windows-1252",
|
| + "windows-1253",
|
| + "windows-1254",
|
| + "windows-1255",
|
| + "windows-1256",
|
| + "windows-1257",
|
| + "windows-1258",
|
| + "windows-874"
|
| +};
|
| +
|
| +// Returns the index of the entry in the array that matches
|
| +// the given encoding method.
|
| +static int encodingToUmaId(const WTF::TextEncoding& encoding)
|
| +{
|
| + const char* encodingName = encoding.name();
|
| + for (size_t i = 0; i < WTF_ARRAY_LENGTH(kEncodingNames); ++i) {
|
| + if (!strcasecmp(kEncodingNames[i], encodingName))
|
| + return i;
|
| + }
|
| + return 0;
|
| +}
|
| +
|
| +static bool isInternalURL(const KURL& url)
|
| +{
|
| + const String& protocol = url.protocol();
|
| + return protocol == "chrome" || protocol == "chrome-native" || protocol == "swappedout";
|
| +}
|
| +#endif
|
| } // namespace
|
|
|
| // WebView ----------------------------------------------------------------
|
| @@ -3927,6 +3990,18 @@ void WebViewImpl::didFinishDocumentLoad(WebLocalFrameImpl* webframe)
|
| if (webframe != mainFrameImpl())
|
| return;
|
| resumeTreeViewCommitsIfRenderingReady();
|
| +#if OS(ANDROID)
|
| + if (!isInternalURL(webframe->frame()->document()->baseURL()) && page()->settings().usesEncodingDetector()) {
|
| + const Document& document = *webframe->frame()->document();
|
| +
|
| + // "AutodetectEncoding.Attempted" is of boolean type - either 0 or 1. Use 2 for the boundary value.
|
| + Platform::current()->histogramEnumeration("AutodetectEncoding.Attempted", document.attemptedToDetermineEncodingFromContentSniffing(), 2);
|
| + if (document.encodingWasDetectedFromContentSniffing()) {
|
| + int encodingId = encodingToUmaId(document.encoding());
|
| + Platform::current()->histogramEnumeration("AutodetectEncoding.Detected", encodingId, WTF_ARRAY_LENGTH(kEncodingNames) + 1);
|
| + }
|
| + }
|
| +#endif
|
| }
|
|
|
| void WebViewImpl::didRemoveAllPendingStylesheet(WebLocalFrameImpl* webframe)
|
|
|