| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/android/data_usage/external_data_use_observer.h" | 5 #include "chrome/browser/android/data_usage/external_data_use_observer.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 } | 240 } |
| 241 | 241 |
| 242 // Tests that at most one data use request is submitted. | 242 // Tests that at most one data use request is submitted. |
| 243 TEST_F(ExternalDataUseObserverTest, AtMostOneDataUseSubmitRequest) { | 243 TEST_F(ExternalDataUseObserverTest, AtMostOneDataUseSubmitRequest) { |
| 244 const std::string label("label"); | 244 const std::string label("label"); |
| 245 | 245 |
| 246 std::vector<std::string> url_regexes; | 246 std::vector<std::string> url_regexes; |
| 247 url_regexes.push_back( | 247 url_regexes.push_back( |
| 248 "http://www[.]google[.]com/#q=.*|https://www[.]google[.]com/#q=.*"); | 248 "http://www[.]google[.]com/#q=.*|https://www[.]google[.]com/#q=.*"); |
| 249 | 249 |
| 250 external_data_use_observer()->FetchMatchingRulesCallbackOnIOThread( | 250 external_data_use_observer()->FetchMatchingRulesDoneOnIOThread( |
| 251 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, | 251 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, |
| 252 std::vector<std::string>(url_regexes.size(), label)); | 252 std::vector<std::string>(url_regexes.size(), label)); |
| 253 EXPECT_EQ(0U, external_data_use_observer()->buffered_data_reports_.size()); | 253 EXPECT_EQ(0U, external_data_use_observer()->buffered_data_reports_.size()); |
| 254 EXPECT_FALSE(external_data_use_observer()->submit_data_report_pending_); | 254 EXPECT_FALSE(external_data_use_observer()->submit_data_report_pending_); |
| 255 EXPECT_FALSE(external_data_use_observer()->matching_rules_fetch_pending_); | 255 EXPECT_FALSE(external_data_use_observer()->matching_rules_fetch_pending_); |
| 256 | 256 |
| 257 std::vector<const data_usage::DataUse*> data_use_sequence; | 257 std::vector<const data_usage::DataUse*> data_use_sequence; |
| 258 data_usage::DataUse data_use_foo( | 258 data_usage::DataUse data_use_foo( |
| 259 GURL("http://www.google.com/#q=abc"), base::TimeTicks::Now(), GURL(), 0, | 259 GURL("http://www.google.com/#q=abc"), base::TimeTicks::Now(), GURL(), 0, |
| 260 net::NetworkChangeNotifier::CONNECTION_UNKNOWN, "mccmnc_foo", | 260 net::NetworkChangeNotifier::CONNECTION_UNKNOWN, "mccmnc_foo", |
| (...skipping 11 matching lines...) Expand all Loading... |
| 272 } | 272 } |
| 273 | 273 |
| 274 // Verifies that buffer size does not exceed the specified limit. | 274 // Verifies that buffer size does not exceed the specified limit. |
| 275 TEST_F(ExternalDataUseObserverTest, BufferSize) { | 275 TEST_F(ExternalDataUseObserverTest, BufferSize) { |
| 276 const std::string label("label"); | 276 const std::string label("label"); |
| 277 | 277 |
| 278 std::vector<std::string> url_regexes; | 278 std::vector<std::string> url_regexes; |
| 279 url_regexes.push_back( | 279 url_regexes.push_back( |
| 280 "http://www[.]google[.]com/#q=.*|https://www[.]google[.]com/#q=.*"); | 280 "http://www[.]google[.]com/#q=.*|https://www[.]google[.]com/#q=.*"); |
| 281 | 281 |
| 282 external_data_use_observer()->FetchMatchingRulesCallbackOnIOThread( | 282 external_data_use_observer()->FetchMatchingRulesDoneOnIOThread( |
| 283 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, | 283 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, |
| 284 std::vector<std::string>(url_regexes.size(), label)); | 284 std::vector<std::string>(url_regexes.size(), label)); |
| 285 | 285 |
| 286 const size_t max_buffer_size = ExternalDataUseObserver::kMaxBufferSize; | 286 const size_t max_buffer_size = ExternalDataUseObserver::kMaxBufferSize; |
| 287 const int bytes_downloaded = 1000; | 287 const int bytes_downloaded = 1000; |
| 288 const int bytes_uploaded = 100; | 288 const int bytes_uploaded = 100; |
| 289 | 289 |
| 290 ScopedVector<data_usage::DataUse> data_use_vector; | 290 ScopedVector<data_usage::DataUse> data_use_vector; |
| 291 // Push more entries than the buffer size. Buffer size should not be exceeded. | 291 // Push more entries than the buffer size. Buffer size should not be exceeded. |
| 292 for (size_t i = 0; i < max_buffer_size * 5; ++i) { | 292 for (size_t i = 0; i < max_buffer_size * 5; ++i) { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 317 } | 317 } |
| 318 | 318 |
| 319 // Tests that buffered data use reports are merged correctly. | 319 // Tests that buffered data use reports are merged correctly. |
| 320 TEST_F(ExternalDataUseObserverTest, ReportsMergedCorrectly) { | 320 TEST_F(ExternalDataUseObserverTest, ReportsMergedCorrectly) { |
| 321 const std::string label("label"); | 321 const std::string label("label"); |
| 322 | 322 |
| 323 std::vector<std::string> url_regexes; | 323 std::vector<std::string> url_regexes; |
| 324 url_regexes.push_back( | 324 url_regexes.push_back( |
| 325 "http://www[.]google[.]com/#q=.*|https://www[.]google[.]com/#q=.*"); | 325 "http://www[.]google[.]com/#q=.*|https://www[.]google[.]com/#q=.*"); |
| 326 | 326 |
| 327 external_data_use_observer()->FetchMatchingRulesCallbackOnIOThread( | 327 external_data_use_observer()->FetchMatchingRulesDoneOnIOThread( |
| 328 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, | 328 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, |
| 329 std::vector<std::string>(url_regexes.size(), label)); | 329 std::vector<std::string>(url_regexes.size(), label)); |
| 330 | 330 |
| 331 const size_t num_iterations = ExternalDataUseObserver::kMaxBufferSize * 5; | 331 const size_t num_iterations = ExternalDataUseObserver::kMaxBufferSize * 5; |
| 332 | 332 |
| 333 ScopedVector<data_usage::DataUse> data_use_vector; | 333 ScopedVector<data_usage::DataUse> data_use_vector; |
| 334 for (size_t i = 0; i < num_iterations; ++i) { | 334 for (size_t i = 0; i < num_iterations; ++i) { |
| 335 scoped_ptr<data_usage::DataUse> data_use_foo(new data_usage::DataUse( | 335 scoped_ptr<data_usage::DataUse> data_use_foo(new data_usage::DataUse( |
| 336 GURL("http://www.google.com/#q=abc"), base::TimeTicks::Now(), GURL(), 0, | 336 GURL("http://www.google.com/#q=abc"), base::TimeTicks::Now(), GURL(), 0, |
| 337 net::NetworkChangeNotifier::CONNECTION_UNKNOWN, "mccmnc_foo", | 337 net::NetworkChangeNotifier::CONNECTION_UNKNOWN, "mccmnc_foo", |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 } | 385 } |
| 386 | 386 |
| 387 // Tests that timestamps of merged reports is correct. | 387 // Tests that timestamps of merged reports is correct. |
| 388 TEST_F(ExternalDataUseObserverTest, TimestampsMergedCorrectly) { | 388 TEST_F(ExternalDataUseObserverTest, TimestampsMergedCorrectly) { |
| 389 const std::string label("label"); | 389 const std::string label("label"); |
| 390 | 390 |
| 391 std::vector<std::string> url_regexes; | 391 std::vector<std::string> url_regexes; |
| 392 url_regexes.push_back( | 392 url_regexes.push_back( |
| 393 "http://www[.]google[.]com/#q=.*|https://www[.]google[.]com/#q=.*"); | 393 "http://www[.]google[.]com/#q=.*|https://www[.]google[.]com/#q=.*"); |
| 394 | 394 |
| 395 external_data_use_observer()->FetchMatchingRulesCallbackOnIOThread( | 395 external_data_use_observer()->FetchMatchingRulesDoneOnIOThread( |
| 396 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, | 396 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, |
| 397 std::vector<std::string>(url_regexes.size(), label)); | 397 std::vector<std::string>(url_regexes.size(), label)); |
| 398 | 398 |
| 399 const size_t num_iterations = ExternalDataUseObserver::kMaxBufferSize * 5; | 399 const size_t num_iterations = ExternalDataUseObserver::kMaxBufferSize * 5; |
| 400 | 400 |
| 401 ScopedVector<data_usage::DataUse> data_use_vector; | 401 ScopedVector<data_usage::DataUse> data_use_vector; |
| 402 for (size_t i = 0; i < num_iterations; ++i) { | 402 for (size_t i = 0; i < num_iterations; ++i) { |
| 403 scoped_ptr<data_usage::DataUse> data_use_foo(new data_usage::DataUse( | 403 scoped_ptr<data_usage::DataUse> data_use_foo(new data_usage::DataUse( |
| 404 GURL("http://www.google.com/#q=abc"), base::TimeTicks::Now(), GURL(), 0, | 404 GURL("http://www.google.com/#q=abc"), base::TimeTicks::Now(), GURL(), 0, |
| 405 net::NetworkChangeNotifier::CONNECTION_UNKNOWN, "mccmnc_foo", 1, 2)); | 405 net::NetworkChangeNotifier::CONNECTION_UNKNOWN, "mccmnc_foo", 1, 2)); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 435 "http://www[.]foo[.]com/#q=.*|https://www[.]foo[.]com/#q=.*"); | 435 "http://www[.]foo[.]com/#q=.*|https://www[.]foo[.]com/#q=.*"); |
| 436 url_regexes.push_back( | 436 url_regexes.push_back( |
| 437 "http://www[.]bar[.]com/#q=.*|https://www[.]bar[.]com/#q=.*"); | 437 "http://www[.]bar[.]com/#q=.*|https://www[.]bar[.]com/#q=.*"); |
| 438 | 438 |
| 439 std::vector<std::string> labels; | 439 std::vector<std::string> labels; |
| 440 const std::string label_foo("label_foo"); | 440 const std::string label_foo("label_foo"); |
| 441 const std::string label_bar("label_bar"); | 441 const std::string label_bar("label_bar"); |
| 442 labels.push_back(label_foo); | 442 labels.push_back(label_foo); |
| 443 labels.push_back(label_bar); | 443 labels.push_back(label_bar); |
| 444 | 444 |
| 445 external_data_use_observer()->FetchMatchingRulesCallbackOnIOThread( | 445 external_data_use_observer()->FetchMatchingRulesDoneOnIOThread( |
| 446 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, | 446 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, |
| 447 labels); | 447 labels); |
| 448 EXPECT_EQ(0U, external_data_use_observer()->buffered_data_reports_.size()); | 448 EXPECT_EQ(0U, external_data_use_observer()->buffered_data_reports_.size()); |
| 449 EXPECT_FALSE(external_data_use_observer()->submit_data_report_pending_); | 449 EXPECT_FALSE(external_data_use_observer()->submit_data_report_pending_); |
| 450 EXPECT_FALSE(external_data_use_observer()->matching_rules_fetch_pending_); | 450 EXPECT_FALSE(external_data_use_observer()->matching_rules_fetch_pending_); |
| 451 | 451 |
| 452 // Check |label_foo| matching rule. | 452 // Check |label_foo| matching rule. |
| 453 std::vector<const data_usage::DataUse*> data_use_sequence; | 453 std::vector<const data_usage::DataUse*> data_use_sequence; |
| 454 data_usage::DataUse data_foo_1( | 454 data_usage::DataUse data_foo_1( |
| 455 GURL("http://www.foo.com/#q=abc"), base::TimeTicks::Now(), GURL(), 0, | 455 GURL("http://www.foo.com/#q=abc"), base::TimeTicks::Now(), GURL(), 0, |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 } | 514 } |
| 515 | 515 |
| 516 // Tests if matching rules are fetched periodically. | 516 // Tests if matching rules are fetched periodically. |
| 517 TEST_F(ExternalDataUseObserverTest, PeriodicFetchMatchingRules) { | 517 TEST_F(ExternalDataUseObserverTest, PeriodicFetchMatchingRules) { |
| 518 const std::string label("label"); | 518 const std::string label("label"); |
| 519 | 519 |
| 520 std::vector<std::string> url_regexes; | 520 std::vector<std::string> url_regexes; |
| 521 url_regexes.push_back( | 521 url_regexes.push_back( |
| 522 "http://www[.]google[.]com/#q=.*|https://www[.]google[.]com/#q=.*"); | 522 "http://www[.]google[.]com/#q=.*|https://www[.]google[.]com/#q=.*"); |
| 523 | 523 |
| 524 external_data_use_observer()->FetchMatchingRulesCallbackOnIOThread( | 524 external_data_use_observer()->FetchMatchingRulesDoneOnIOThread( |
| 525 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, | 525 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, |
| 526 std::vector<std::string>(url_regexes.size(), label)); | 526 std::vector<std::string>(url_regexes.size(), label)); |
| 527 | 527 |
| 528 EXPECT_FALSE(external_data_use_observer()->matching_rules_fetch_pending_); | 528 EXPECT_FALSE(external_data_use_observer()->matching_rules_fetch_pending_); |
| 529 EXPECT_FALSE( | 529 EXPECT_FALSE( |
| 530 external_data_use_observer()->last_matching_rules_fetch_time_.is_null()); | 530 external_data_use_observer()->last_matching_rules_fetch_time_.is_null()); |
| 531 | 531 |
| 532 std::vector<const data_usage::DataUse*> data_use_sequence; | 532 std::vector<const data_usage::DataUse*> data_use_sequence; |
| 533 data_usage::DataUse data_use_foo( | 533 data_usage::DataUse data_use_foo( |
| 534 GURL("http://www.google.com/#q=abc"), base::TimeTicks::Now(), GURL(), 0, | 534 GURL("http://www.google.com/#q=abc"), base::TimeTicks::Now(), GURL(), 0, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 555 | 555 |
| 556 // Tests if data use reports are sent only after the total bytes send/received | 556 // Tests if data use reports are sent only after the total bytes send/received |
| 557 // across all buffered reports have reached the specified threshold. | 557 // across all buffered reports have reached the specified threshold. |
| 558 TEST_F(ExternalDataUseObserverTest, BufferDataUseReports) { | 558 TEST_F(ExternalDataUseObserverTest, BufferDataUseReports) { |
| 559 const std::string label("label"); | 559 const std::string label("label"); |
| 560 | 560 |
| 561 std::vector<std::string> url_regexes; | 561 std::vector<std::string> url_regexes; |
| 562 url_regexes.push_back( | 562 url_regexes.push_back( |
| 563 "http://www[.]google[.]com/#q=.*|https://www[.]google[.]com/#q=.*"); | 563 "http://www[.]google[.]com/#q=.*|https://www[.]google[.]com/#q=.*"); |
| 564 | 564 |
| 565 external_data_use_observer()->FetchMatchingRulesCallbackOnIOThread( | 565 external_data_use_observer()->FetchMatchingRulesDoneOnIOThread( |
| 566 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, | 566 std::vector<std::string>(url_regexes.size(), std::string()), url_regexes, |
| 567 std::vector<std::string>(url_regexes.size(), label)); | 567 std::vector<std::string>(url_regexes.size(), label)); |
| 568 | 568 |
| 569 // This tests reports 1024 bytes in each loop iteration. For the test to work | 569 // This tests reports 1024 bytes in each loop iteration. For the test to work |
| 570 // properly, |data_use_report_min_bytes_| should be a multiple of 1024. | 570 // properly, |data_use_report_min_bytes_| should be a multiple of 1024. |
| 571 ASSERT_EQ(0, external_data_use_observer()->data_use_report_min_bytes_ % 1024); | 571 ASSERT_EQ(0, external_data_use_observer()->data_use_report_min_bytes_ % 1024); |
| 572 | 572 |
| 573 const size_t num_iterations = | 573 const size_t num_iterations = |
| 574 external_data_use_observer()->data_use_report_min_bytes_ / 1024; | 574 external_data_use_observer()->data_use_report_min_bytes_ / 1024; |
| 575 | 575 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 636 external_data_use_obsever_with_variations | 636 external_data_use_obsever_with_variations |
| 637 ->fetch_matching_rules_duration_); | 637 ->fetch_matching_rules_duration_); |
| 638 EXPECT_EQ( | 638 EXPECT_EQ( |
| 639 data_use_report_min_bytes, | 639 data_use_report_min_bytes, |
| 640 external_data_use_obsever_with_variations->data_use_report_min_bytes_); | 640 external_data_use_obsever_with_variations->data_use_report_min_bytes_); |
| 641 } | 641 } |
| 642 | 642 |
| 643 } // namespace android | 643 } // namespace android |
| 644 | 644 |
| 645 } // namespace chrome | 645 } // namespace chrome |
| OLD | NEW |