| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/data_use_measurement/core/data_use_ascriber.h" |
| |
| #include <utility> |
| |
| #include "base/memory/ptr_util.h" |
| #include "components/data_use_measurement/core/data_use_network_delegate.h" |
| #include "components/data_use_measurement/core/data_use_recorder.h" |
| #include "components/data_use_measurement/core/url_request_classifier.h" |
| |
| namespace data_use_measurement { |
| |
| std::unique_ptr<net::NetworkDelegate> DataUseAscriber::CreateNetworkDelegate( |
| std::unique_ptr<net::NetworkDelegate> wrapped_network_delegate, |
| const metrics::UpdateUsagePrefCallbackType& metrics_data_use_forwarder) { |
| return base::MakeUnique<data_use_measurement::DataUseNetworkDelegate>( |
| std::move(wrapped_network_delegate), this, CreateURLRequestClassifier(), |
| metrics_data_use_forwarder); |
| } |
| |
| void DataUseAscriber::OnBeforeUrlRequest(net::URLRequest* request) { |
| DataUseRecorder* recorder = GetOrCreateDataUseRecorder(request); |
| if (recorder) |
| recorder->OnBeforeUrlRequest(request); |
| } |
| |
| void DataUseAscriber::OnNetworkBytesSent(net::URLRequest* request, |
| int64_t bytes_sent) { |
| DataUseRecorder* recorder = GetDataUseRecorder(*request); |
| if (recorder) |
| recorder->OnNetworkBytesSent(request, bytes_sent); |
| } |
| |
| void DataUseAscriber::OnNetworkBytesReceived(net::URLRequest* request, |
| int64_t bytes_received) { |
| DataUseRecorder* recorder = GetDataUseRecorder(*request); |
| if (recorder) |
| recorder->OnNetworkBytesReceived(request, bytes_received); |
| } |
| |
| void DataUseAscriber::OnUrlRequestCompleted(net::URLRequest* request, |
| bool started) {} |
| |
| void DataUseAscriber::OnUrlRequestDestroyed(net::URLRequest* request) { |
| DataUseRecorder* recorder = GetOrCreateDataUseRecorder(request); |
| if (recorder) |
| recorder->OnUrlRequestDestroyed(request); |
| } |
| |
| } // namespace data_use_measurement |