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

Unified Diff: components/offline_pages/core/background/request_coordinator.cc

Issue 2840083002: Add UMA for network type at request start (Closed)
Patch Set: Rebase to remove superflous change in prerendering_offliner Created 3 years, 8 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: components/offline_pages/core/background/request_coordinator.cc
diff --git a/components/offline_pages/core/background/request_coordinator.cc b/components/offline_pages/core/background/request_coordinator.cc
index c8ef7aeb6144ed9e655231e5534daa92163fd5fe..78cbccf1ffb625e08f1e9716245789f687330f6b 100644
--- a/components/offline_pages/core/background/request_coordinator.cc
+++ b/components/offline_pages/core/background/request_coordinator.cc
@@ -158,6 +158,23 @@ void RecordSavePageLaterNetworkQuality(
histogram->Add(effective_connection);
}
+// Record the network quality at request creation time per namespace.
+void RecordNetworkQualityAtRequestStartForFailedRequest(
+ const ClientId& client_id,
+ const net::EffectiveConnectionType effective_connection) {
+ // The histogram below is an expansion of the UMA_HISTOGRAM_ENUMERATION
+ // macro adapted to allow for a dynamically suffixed histogram name.
+ // Note: The factory creates and owns the histogram.
+ base::HistogramBase* histogram = base::LinearHistogram::FactoryGet(
+ AddHistogramSuffix(
+ client_id,
+ "OfflinePages.Background.EffectiveConnectionType.OffliningStartType"),
+ 1, net::EFFECTIVE_CONNECTION_TYPE_LAST - 1,
+ net::EFFECTIVE_CONNECTION_TYPE_LAST,
+ base::HistogramBase::kUmaTargetedHistogramFlag);
+ histogram->Add(effective_connection);
+}
+
// This should use the same algorithm as we use for OfflinePageItem, so the IDs
// are similar.
int64_t GenerateOfflineId() {
@@ -207,6 +224,7 @@ RequestCoordinator::RequestCoordinator(
scheduler_(std::move(scheduler)),
policy_controller_(new ClientPolicyController()),
network_quality_estimator_(network_quality_estimator),
+ network_quality_at_request_start_(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN),
active_request_id_(0),
last_offlining_status_(Offliner::RequestStatus::UNKNOWN),
scheduler_callback_(base::Bind(&EmptySchedulerCallback)),
@@ -398,7 +416,7 @@ void RequestCoordinator::RemoveRequests(
weak_ptr_factory_.GetWeakPtr(), callback,
RequestNotifier::BackgroundSavePageResult::REMOVED));
- // Record the network quality when this request is made.
+ // Record the network quality when this request is removed.
if (network_quality_estimator_) {
UMA_HISTOGRAM_ENUMERATION(
"OfflinePages.Background.EffectiveConnectionType.RemoveRequests",
@@ -427,7 +445,7 @@ void RequestCoordinator::PauseRequests(
base::Bind(&RequestCoordinator::UpdateMultipleRequestsCallback,
weak_ptr_factory_.GetWeakPtr()));
- // Record the network quality when this request is made.
+ // Record the network quality when this request is paused.
if (network_quality_estimator_) {
UMA_HISTOGRAM_ENUMERATION(
"OfflinePages.Background.EffectiveConnectionType.PauseRequests",
@@ -448,7 +466,7 @@ void RequestCoordinator::ResumeRequests(
base::Bind(&RequestCoordinator::UpdateMultipleRequestsCallback,
weak_ptr_factory_.GetWeakPtr()));
- // Record the network quality when this request is made.
+ // Record the network quality when this request is resumed.
if (network_quality_estimator_) {
UMA_HISTOGRAM_ENUMERATION(
"OfflinePages.Background.EffectiveConnectionType.ResumeRequests",
@@ -876,6 +894,8 @@ void RequestCoordinator::StartOffliner(
}
active_request_id_ = request_id;
+ network_quality_at_request_start_ =
+ network_quality_estimator_->GetEffectiveConnectionType();
// Start the load and save process in the offliner (Async).
if (offliner_->LoadAndSave(
@@ -942,6 +962,14 @@ void RequestCoordinator::OfflinerProgressCallback(
void RequestCoordinator::UpdateRequestForCompletedAttempt(
const SavePageRequest& request,
Offliner::RequestStatus status) {
+ // If the request failed, report the connection type as of the start of the
+ // request.
+ if (status != Offliner::RequestStatus::SAVED &&
+ status != Offliner::RequestStatus::SAVED_ON_LAST_RETRY) {
+ RecordNetworkQualityAtRequestStartForFailedRequest(
+ request.client_id(), network_quality_at_request_start_);
+ }
+
if (status == Offliner::RequestStatus::FOREGROUND_CANCELED ||
status == Offliner::RequestStatus::LOADING_CANCELED) {
// Update the request for the canceled attempt.

Powered by Google App Engine
This is Rietveld 408576698