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

Unified Diff: extensions/browser/api/web_request/web_request_api.cc

Issue 2708923005: Extensions: Add metrics for Web Request API actions. (Closed)
Patch Set: Change when logging is done. Created 3 years, 10 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
Index: extensions/browser/api/web_request/web_request_api.cc
diff --git a/extensions/browser/api/web_request/web_request_api.cc b/extensions/browser/api/web_request/web_request_api.cc
index b81023248535d3064adaf563327f06568d444b64..0c3fb78717d20ac09b539d4cc93826101816c520 100644
--- a/extensions/browser/api/web_request/web_request_api.cc
+++ b/extensions/browser/api/web_request/web_request_api.cc
@@ -87,7 +87,21 @@ namespace web_request = api::web_request;
namespace {
+// Describes the action taken by the Web Request API for a given stage of a web
+// request.
+// These values are written to logs. New enum values can be added, but existing
+// enum values must never be renumbered or deleted and reused.
+enum RequestAction {
+ CANCEL = 0,
+ REDIRECT = 1,
+ MODIFY_REQUEST_HEADERS = 2,
+ MODIFY_RESPONSE_HEADERS = 3,
+ SET_AUTH_CREDENTIALS = 4,
+ MAX
+};
+
const char kWebRequestEventPrefix[] = "webRequest.";
+const char kWebRequestActionUMA[] = "Extensions.WebRequestAction";
// List of all the webRequest events.
const char* const kWebRequestEvents[] = {
@@ -1800,6 +1814,8 @@ int ExtensionWebRequestEventRouter::ExecuteDeltas(
base::Time::Now() - blocked_request.blocking_time;
request_time_tracker_->IncrementTotalBlockTime(request_id, block_time);
+ bool request_headers_modified = false;
+ bool response_headers_modified = false;
bool credentials_set = false;
deltas.sort(&helpers::InDecreasingExtensionInstallationTimeOrder);
@@ -1817,17 +1833,15 @@ int ExtensionWebRequestEventRouter::ExecuteDeltas(
} else if (blocked_request.event == kOnBeforeSendHeaders) {
CHECK(!blocked_request.callback.is_null());
helpers::MergeOnBeforeSendHeadersResponses(
- blocked_request.response_deltas,
- blocked_request.request_headers,
- &warnings,
- blocked_request.net_log);
+ blocked_request.response_deltas, blocked_request.request_headers,
+ &warnings, blocked_request.net_log, &request_headers_modified);
} else if (blocked_request.event == kOnHeadersReceived) {
CHECK(!blocked_request.callback.is_null());
helpers::MergeOnHeadersReceivedResponses(
blocked_request.request->url(), blocked_request.response_deltas,
blocked_request.original_response_headers.get(),
blocked_request.override_response_headers, blocked_request.new_url,
- &warnings, blocked_request.net_log);
+ &warnings, blocked_request.net_log, &response_headers_modified);
} else if (blocked_request.event == kOnAuthRequired) {
CHECK(blocked_request.callback.is_null());
CHECK(!blocked_request.auth_callback.is_null());
@@ -1850,11 +1864,39 @@ int ExtensionWebRequestEventRouter::ExecuteDeltas(
browser_context, warnings));
}
- if (canceled) {
+ const bool redirected =
+ blocked_request.new_url && !blocked_request.new_url->is_empty();
+
+ if (canceled)
request_time_tracker_->SetRequestCanceled(request_id);
- } else if (blocked_request.new_url &&
- !blocked_request.new_url->is_empty()) {
+ else if (redirected)
request_time_tracker_->SetRequestRedirected(request_id);
+
+ // Log UMA metrics. Note: We are not necessarily concerned with the final
+ // action taken. Instead we are interested in how frequently the different
+ // actions are used by extensions.
Devlin 2017/02/25 18:39:34 nit: Might be worth explicitly calling out that mu
karandeepb 2017/02/28 00:56:45 Done.
+ if (canceled) {
+ UMA_HISTOGRAM_ENUMERATION(kWebRequestActionUMA, RequestAction::CANCEL,
+ RequestAction::MAX);
Ilya Sherman 2017/02/27 19:29:25 Please create a wrapper for emitting to this histo
karandeepb 2017/02/28 00:56:45 Done.
+ }
+ if (redirected) {
+ UMA_HISTOGRAM_ENUMERATION(kWebRequestActionUMA, RequestAction::REDIRECT,
+ RequestAction::MAX);
+ }
+ if (request_headers_modified) {
+ UMA_HISTOGRAM_ENUMERATION(kWebRequestActionUMA,
+ RequestAction::MODIFY_REQUEST_HEADERS,
+ RequestAction::MAX);
+ }
+ if (response_headers_modified) {
+ UMA_HISTOGRAM_ENUMERATION(kWebRequestActionUMA,
+ RequestAction::MODIFY_RESPONSE_HEADERS,
+ RequestAction::MAX);
+ }
+ if (credentials_set) {
+ UMA_HISTOGRAM_ENUMERATION(kWebRequestActionUMA,
+ RequestAction::SET_AUTH_CREDENTIALS,
+ RequestAction::MAX);
}
// This triggers onErrorOccurred if canceled is true.

Powered by Google App Engine
This is Rietveld 408576698