Commit 01db9e6d authored by John Abd-El-Malek's avatar John Abd-El-Malek

Add UMA for how often the first read sniffs the final mime type.

This is to figure out whether we need to buffer data in the network service's URLLoaderImpl.

BUG=746144

Change-Id: I10a0b5923b8d9fefdceee98bbc07671e53ab4f8d
Reviewed-on: https://chromium-review.googlesource.com/581742
Commit-Queue: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: default avatarIlya Sherman <isherman@chromium.org>
Reviewed-by: default avatarMatt Menke <mmenke@chromium.org>
Reviewed-by: default avatarSteven Holte <holte@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488776}
parent 2e280d57
......@@ -126,6 +126,7 @@ MimeSniffingResourceHandler::MimeSniffingResourceHandler(
must_download_is_set_(false),
read_buffer_size_(0),
bytes_read_(0),
sniffed_(false),
parent_read_buffer_(nullptr),
parent_read_buffer_size_(nullptr),
intercepting_handler_(intercepting_handler),
......@@ -135,7 +136,13 @@ MimeSniffingResourceHandler::MimeSniffingResourceHandler(
weak_ptr_factory_(this) {
}
MimeSniffingResourceHandler::~MimeSniffingResourceHandler() {}
MimeSniffingResourceHandler::~MimeSniffingResourceHandler() {
if (sniffed_) {
UMA_HISTOGRAM_BOOLEAN(
"Net.MimeSniffDeterminedFromFirstRead",
first_sniffed_mime_type_ == response_->head.mime_type);
}
}
void MimeSniffingResourceHandler::OnWillStart(
const GURL& url,
......@@ -276,6 +283,10 @@ void MimeSniffingResourceHandler::OnReadCompleted(
bool made_final_decision =
net::SniffMimeType(read_buffer_->data(), bytes_read_, request()->url(),
type_hint, &new_type);
if (!sniffed_) {
first_sniffed_mime_type_ = new_type;
sniffed_ = true;
}
// SniffMimeType() returns false if there is not enough data to determine
// the mime type. However, even if it returns false, it returns a new type
......
......@@ -175,6 +175,10 @@ class CONTENT_EXPORT MimeSniffingResourceHandler
int read_buffer_size_;
int bytes_read_;
// The mime type that was sniffed the first time we had data.
bool sniffed_;
std::string first_sniffed_mime_type_;
// Pointers to parent-owned read buffer and its size. Only used for first
// OnWillRead call.
scoped_refptr<net::IOBuffer>* parent_read_buffer_;
......
......@@ -38850,6 +38850,14 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</summary>
</histogram>
<histogram name="Net.MimeSniffDeterminedFromFirstRead" enum="Boolean">
<owner>jam@chromium.org</owner>
<summary>
True counts the events when mime sniffing succeeded from the first read.
False means that it took more reads to determine the mime type.
</summary>
</histogram>
<histogram name="Net.MTPR_GetProxyForUrl_Thread_Wait_Time" units="ms">
<obsolete>
Removed in Chrome 39.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment