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

Unified Diff: components/data_usage/core/data_use_aggregator_unittest.cc

Issue 1421983002: Include tab IDs when reporting data use accounting. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@data_use_scoped_vector
Patch Set: Fixed external_data_use_observer test Created 5 years, 1 month 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 | « components/data_usage/core/data_use_aggregator.cc ('k') | components/data_usage/core/data_use_annotator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/data_usage/core/data_use_aggregator_unittest.cc
diff --git a/components/data_usage/core/data_use_aggregator_unittest.cc b/components/data_usage/core/data_use_aggregator_unittest.cc
index fcd5b262fd77a2e6d48cdb7a12b2c8ed3949a360..f0d5f44d67e5288ed7ac72a2242d239983da0c50 100644
--- a/components/data_usage/core/data_use_aggregator_unittest.cc
+++ b/components/data_usage/core/data_use_aggregator_unittest.cc
@@ -10,9 +10,12 @@
#include <string>
#include <vector>
+#include "base/callback.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
+#include "base/time/time.h"
#include "components/data_usage/core/data_use.h"
+#include "components/data_usage/core/data_use_annotator.h"
#include "net/base/load_timing_info.h"
#include "net/base/network_change_notifier.h"
#include "net/base/network_delegate_impl.h"
@@ -26,8 +29,20 @@ namespace data_usage {
namespace {
+base::TimeTicks GetRequestStart(const net::URLRequest& request) {
+ net::LoadTimingInfo load_timing_info;
+ request.GetLoadTimingInfo(&load_timing_info);
+ return load_timing_info.request_start;
+}
+
// Test class that can set the network operator's MCCMNC.
class TestDataUseAggregator : public DataUseAggregator {
+ public:
+ TestDataUseAggregator(scoped_ptr<DataUseAnnotator> annotator)
+ : DataUseAggregator(annotator.Pass()) {}
+
+ ~TestDataUseAggregator() override {}
+
private:
friend class TestNetworkChangeNotifier;
using DataUseAggregator::OnConnectionTypeChanged;
@@ -64,6 +79,29 @@ class TestNetworkChangeNotifier : public net::NetworkChangeNotifier {
DISALLOW_COPY_AND_ASSIGN(TestNetworkChangeNotifier);
};
+// A fake DataUseAnnotator that sets the tab ID of DataUse objects to a
+// predetermined fake tab ID.
+class FakeDataUseAnnotator : public DataUseAnnotator {
+ public:
+ FakeDataUseAnnotator() : tab_id_(-1) {}
+ ~FakeDataUseAnnotator() override {}
+
+ void Annotate(
+ net::URLRequest* request,
+ scoped_ptr<DataUse> data_use,
+ const base::Callback<void(scoped_ptr<DataUse>)>& callback) override {
+ data_use->tab_id = tab_id_;
+ callback.Run(data_use.Pass());
+ }
+
+ void set_tab_id(int32_t tab_id) { tab_id_ = tab_id; }
+
+ private:
+ int32_t tab_id_;
+
+ DISALLOW_COPY_AND_ASSIGN(FakeDataUseAnnotator);
+};
+
// A network delegate that reports all received and sent network bytes to a
// DataUseAggregator.
class ReportingNetworkDelegate : public net::NetworkDelegateImpl {
@@ -88,8 +126,10 @@ class ReportingNetworkDelegate : public net::NetworkDelegateImpl {
ReportingNetworkDelegate(
TestDataUseAggregator* data_use_aggregator,
+ FakeDataUseAnnotator* fake_data_use_annotator,
TestNetworkChangeNotifier* test_network_change_notifier)
: data_use_aggregator_(data_use_aggregator),
+ fake_data_use_annotator_(fake_data_use_annotator),
test_network_change_notifier_(test_network_change_notifier) {}
~ReportingNetworkDelegate() override {}
@@ -99,7 +139,7 @@ class ReportingNetworkDelegate : public net::NetworkDelegateImpl {
}
private:
- DataUseContext UpdateDataUseContext(const net::URLRequest& request) {
+ void UpdateDataUseContext(const net::URLRequest& request) {
DataUseContextMap::const_iterator data_use_context_it =
data_use_context_map_.find(&request);
DataUseContext data_use_context =
@@ -107,29 +147,30 @@ class ReportingNetworkDelegate : public net::NetworkDelegateImpl {
? DataUseContext()
: data_use_context_it->second;
+ fake_data_use_annotator_->set_tab_id(data_use_context.tab_id);
+
if (test_network_change_notifier_->GetCurrentConnectionType() !=
data_use_context.connection_type) {
test_network_change_notifier_->SimulateNetworkConnectionChange(
data_use_context.connection_type, data_use_context.mcc_mnc);
}
- return data_use_context;
}
- void OnNetworkBytesReceived(const net::URLRequest& request,
+ void OnNetworkBytesReceived(net::URLRequest* request,
int64_t bytes_received) override {
- DataUseContext data_use_context = UpdateDataUseContext(request);
- data_use_aggregator_->ReportDataUse(request, data_use_context.tab_id,
- 0 /* tx_bytes */, bytes_received);
+ UpdateDataUseContext(*request);
+ data_use_aggregator_->ReportDataUse(request, 0 /* tx_bytes */,
+ bytes_received);
}
- void OnNetworkBytesSent(const net::URLRequest& request,
+ void OnNetworkBytesSent(net::URLRequest* request,
int64_t bytes_sent) override {
- DataUseContext data_use_context = UpdateDataUseContext(request);
- data_use_aggregator_->ReportDataUse(request, data_use_context.tab_id,
- bytes_sent, 0 /* rx_bytes */);
+ UpdateDataUseContext(*request);
+ data_use_aggregator_->ReportDataUse(request, bytes_sent, 0 /* rx_bytes */);
}
TestDataUseAggregator* data_use_aggregator_;
+ FakeDataUseAnnotator* fake_data_use_annotator_;
TestNetworkChangeNotifier* test_network_change_notifier_;
DataUseContextMap data_use_context_map_;
@@ -171,8 +212,12 @@ class TestObserver : public DataUseAggregator::Observer {
class DataUseAggregatorTest : public testing::Test {
public:
DataUseAggregatorTest()
- : test_network_change_notifier_(&data_use_aggregator_),
+ : fake_data_use_annotator_(new FakeDataUseAnnotator()),
+ data_use_aggregator_(
+ scoped_ptr<DataUseAnnotator>(fake_data_use_annotator_)),
+ test_network_change_notifier_(&data_use_aggregator_),
reporting_network_delegate_(&data_use_aggregator_,
+ fake_data_use_annotator_,
&test_network_change_notifier_),
context_(true),
test_observer_(&data_use_aggregator_) {
@@ -229,6 +274,8 @@ class DataUseAggregatorTest : public testing::Test {
private:
base::MessageLoopForIO loop_;
+ // Weak, owned by |data_use_aggregator_|.
+ FakeDataUseAnnotator* fake_data_use_annotator_;
TestDataUseAggregator data_use_aggregator_;
TestNetworkChangeNotifier test_network_change_notifier_;
net::MockClientSocketFactory mock_socket_factory_;
@@ -262,10 +309,7 @@ TEST_F(DataUseAggregatorTest, ReportDataUse) {
int64_t observed_foo_tx_bytes = 0, observed_foo_rx_bytes = 0;
while (data_use_it != test_observer()->observed_data_use().end() &&
data_use_it->url == GURL("http://foo.com")) {
- net::LoadTimingInfo foo_load_timing_info;
- foo_request->GetLoadTimingInfo(&foo_load_timing_info);
-
- EXPECT_EQ(foo_load_timing_info.request_start, data_use_it->request_start);
+ EXPECT_EQ(GetRequestStart(*foo_request), data_use_it->request_start);
EXPECT_EQ(GURL("http://foofirstparty.com"),
data_use_it->first_party_for_cookies);
EXPECT_EQ(kFooTabId, data_use_it->tab_id);
@@ -282,11 +326,8 @@ TEST_F(DataUseAggregatorTest, ReportDataUse) {
// Then, the |bar_request| data use should have happened.
int64_t observed_bar_tx_bytes = 0, observed_bar_rx_bytes = 0;
while (data_use_it != test_observer()->observed_data_use().end()) {
- net::LoadTimingInfo bar_load_timing_info;
- bar_request->GetLoadTimingInfo(&bar_load_timing_info);
-
EXPECT_EQ(GURL("http://bar.com"), data_use_it->url);
- EXPECT_EQ(bar_load_timing_info.request_start, data_use_it->request_start);
+ EXPECT_EQ(GetRequestStart(*bar_request), data_use_it->request_start);
EXPECT_EQ(GURL("http://barfirstparty.com"),
data_use_it->first_party_for_cookies);
EXPECT_EQ(kBarTabId, data_use_it->tab_id);
@@ -367,9 +408,7 @@ TEST_F(DataUseAggregatorTest, ReportCombinedDataUse) {
// DataUse element.
const DataUse& foo_data_use = test_observer()->observed_data_use().front();
EXPECT_EQ(GURL("http://foo.com"), foo_data_use.url);
- net::LoadTimingInfo foo_load_timing_info;
- foo_request->GetLoadTimingInfo(&foo_load_timing_info);
- EXPECT_EQ(foo_load_timing_info.request_start, foo_data_use.request_start);
+ EXPECT_EQ(GetRequestStart(*foo_request), foo_data_use.request_start);
EXPECT_EQ(GURL("http://foofirstparty.com"),
foo_data_use.first_party_for_cookies);
EXPECT_EQ(kFooTabId, foo_data_use.tab_id);
@@ -382,9 +421,7 @@ TEST_F(DataUseAggregatorTest, ReportCombinedDataUse) {
// DataUse element.
const DataUse& bar_data_use = test_observer()->observed_data_use().back();
EXPECT_EQ(GURL("http://bar.com"), bar_data_use.url);
- net::LoadTimingInfo bar_load_timing_info;
- bar_request->GetLoadTimingInfo(&bar_load_timing_info);
- EXPECT_EQ(bar_load_timing_info.request_start, bar_data_use.request_start);
+ EXPECT_EQ(GetRequestStart(*bar_request), bar_data_use.request_start);
EXPECT_EQ(GURL("http://barfirstparty.com"),
bar_data_use.first_party_for_cookies);
EXPECT_EQ(kBarTabId, bar_data_use.tab_id);
« no previous file with comments | « components/data_usage/core/data_use_aggregator.cc ('k') | components/data_usage/core/data_use_annotator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698