Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Unified Diff: chrome/browser/renderer_host/buffered_resource_handler.cc

Issue 18214: Collect some metrics on nosniff. There is some concern that respecting this ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/histogram.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/renderer_host/buffered_resource_handler.cc
===================================================================
--- chrome/browser/renderer_host/buffered_resource_handler.cc (revision 7938)
+++ chrome/browser/renderer_host/buffered_resource_handler.cc (working copy)
@@ -4,10 +4,33 @@
#include "chrome/browser/renderer_host/buffered_resource_handler.h"
+#include "base/histogram.h"
#include "net/base/mime_sniffer.h"
#include "chrome/browser/renderer_host/download_throttling_resource_handler.h"
#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
+namespace {
+
+void RecordSnifferMetrics(bool sniffing_blocked,
+ bool we_would_like_to_sniff,
+ const std::string& mime_type) {
+ static BooleanHistogram nosniff_usage(L"nosniff.usage");
+ nosniff_usage.SetFlags(kUmaTargetedHistogramFlag);
+ nosniff_usage.AddBoolean(sniffing_blocked);
+
+ if (sniffing_blocked) {
+ static BooleanHistogram nosniff_otherwise(L"nosniff.otherwise");
+ nosniff_otherwise.SetFlags(kUmaTargetedHistogramFlag);
+ nosniff_otherwise.AddBoolean(we_would_like_to_sniff);
+
+ static BooleanHistogram nosniff_empty_mime_type(L"nosniff.empty_mime_type");
+ nosniff_empty_mime_type.SetFlags(kUmaTargetedHistogramFlag);
+ nosniff_empty_mime_type.AddBoolean(mime_type.empty());
+ }
+}
+
+} // namespace
+
BufferedResourceHandler::BufferedResourceHandler(ResourceHandler* handler,
ResourceDispatcherHost* host,
URLRequest* request)
@@ -92,8 +115,14 @@
std::string content_type_options;
request_->GetResponseHeaderByName("x-content-type-options",
&content_type_options);
- if (content_type_options != "nosniff" &&
- net::ShouldSniffMimeType(request_->url(), mime_type)) {
+
+ const bool sniffing_blocked = (content_type_options == "nosniff");
+ const bool we_would_like_to_sniff =
+ net::ShouldSniffMimeType(request_->url(), mime_type);
+
+ RecordSnifferMetrics(sniffing_blocked, we_would_like_to_sniff, mime_type);
+
+ if (!sniffing_blocked && we_would_like_to_sniff) {
// We're going to look at the data before deciding what the content type
// is. That means we need to delay sending the ResponseStarted message
// over the IPC channel.
« no previous file with comments | « base/histogram.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698