| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <map> | 10 #include <map> |
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 external_data_use_observer()->last_matching_rules_fetch_time_ = | 392 external_data_use_observer()->last_matching_rules_fetch_time_ = |
| 393 base::TimeTicks(); | 393 base::TimeTicks(); |
| 394 external_data_use_observer()->data_use_tab_model_->is_control_app_installed_ = | 394 external_data_use_observer()->data_use_tab_model_->is_control_app_installed_ = |
| 395 false; | 395 false; |
| 396 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent( | 396 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent( |
| 397 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL), | 397 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL), |
| 398 std::string()); | 398 std::string()); |
| 399 EXPECT_TRUE( | 399 EXPECT_TRUE( |
| 400 external_data_use_observer()->last_matching_rules_fetch_time_.is_null()); | 400 external_data_use_observer()->last_matching_rules_fetch_time_.is_null()); |
| 401 | 401 |
| 402 // Matching rules are fetched when control app gets installed. |
| 403 external_data_use_observer() |
| 404 ->data_use_tab_model_->OnControlAppInstallStateChange(true); |
| 405 base::RunLoop().RunUntilIdle(); |
| 406 EXPECT_TRUE( |
| 407 external_data_use_observer()->last_matching_rules_fetch_time_.is_null()); |
| 408 |
| 402 // Matching rules fetched on every navigation if control app is installed and | 409 // Matching rules fetched on every navigation if control app is installed and |
| 403 // zero rules are available. | 410 // zero rules are available. |
| 404 external_data_use_observer() | 411 external_data_use_observer()->last_matching_rules_fetch_time_ = |
| 405 ->data_use_tab_model_->OnControlAppInstallStateChange(true); | 412 base::TimeTicks(); |
| 406 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent( | 413 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent( |
| 407 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL), | 414 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL), |
| 408 std::string()); | 415 std::string()); |
| 409 base::RunLoop().RunUntilIdle(); | 416 base::RunLoop().RunUntilIdle(); |
| 410 EXPECT_FALSE( | 417 EXPECT_FALSE( |
| 411 external_data_use_observer()->last_matching_rules_fetch_time_.is_null()); | 418 external_data_use_observer()->last_matching_rules_fetch_time_.is_null()); |
| 412 | 419 |
| 413 // Matching rules not fetched on navigation if control app is installed and | 420 // Matching rules not fetched on navigation if control app is installed and |
| 414 // more than zero rules are available. | 421 // more than zero rules are available. |
| 415 AddDefaultMatchingRule(); | 422 AddDefaultMatchingRule(); |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 579 | 586 |
| 580 // Tests if the metrics are recorded correctly. | 587 // Tests if the metrics are recorded correctly. |
| 581 TEST_F(ExternalDataUseObserverTest, DataUseReportTimedOut) { | 588 TEST_F(ExternalDataUseObserverTest, DataUseReportTimedOut) { |
| 582 base::HistogramTester histogram_tester; | 589 base::HistogramTester histogram_tester; |
| 583 std::map<std::string, std::string> variation_params; | 590 std::map<std::string, std::string> variation_params; |
| 584 variation_params["data_report_submit_timeout_msec"] = "0"; | 591 variation_params["data_report_submit_timeout_msec"] = "0"; |
| 585 variation_params["data_use_report_min_bytes"] = "0"; | 592 variation_params["data_use_report_min_bytes"] = "0"; |
| 586 | 593 |
| 587 // Create another ExternalDataUseObserver object. | 594 // Create another ExternalDataUseObserver object. |
| 588 ReplaceExternalDataUseObserver(variation_params); | 595 ReplaceExternalDataUseObserver(variation_params); |
| 596 histogram_tester.ExpectTotalCount(kUMAMatchingRuleFirstFetchDurationHistogram, |
| 597 0); |
| 589 | 598 |
| 590 // Trigger the control app install. | 599 // Trigger the control app install, which will fetch the matching rules. |
| 591 external_data_use_observer() | 600 external_data_use_observer() |
| 592 ->GetDataUseTabModel() | 601 ->GetDataUseTabModel() |
| 593 ->OnControlAppInstallStateChange(true); | 602 ->OnControlAppInstallStateChange(true); |
| 594 histogram_tester.ExpectTotalCount(kUMAMatchingRuleFirstFetchDurationHistogram, | 603 histogram_tester.ExpectTotalCount(kUMAMatchingRuleFirstFetchDurationHistogram, |
| 595 0); | 604 1); |
| 596 | 605 |
| 597 // Verify that matching rules are fetched on the first navigation after the | 606 // Verify that matching rules are fetched on the first navigation after the |
| 598 // control app is installed. | 607 // control app is installed. |
| 599 external_data_use_observer()->GetDataUseTabModel()->OnNavigationEvent( | 608 external_data_use_observer()->GetDataUseTabModel()->OnNavigationEvent( |
| 600 kDefaultTabId, DataUseTabModel::TRANSITION_OMNIBOX_SEARCH, | 609 kDefaultTabId, DataUseTabModel::TRANSITION_OMNIBOX_SEARCH, |
| 601 GURL(kDefaultURL), std::string()); | 610 GURL(kDefaultURL), std::string()); |
| 602 base::RunLoop().RunUntilIdle(); | 611 base::RunLoop().RunUntilIdle(); |
| 603 histogram_tester.ExpectTotalCount(kUMAMatchingRuleFirstFetchDurationHistogram, | 612 histogram_tester.ExpectTotalCount(kUMAMatchingRuleFirstFetchDurationHistogram, |
| 604 1); | 613 1); |
| 605 | 614 |
| 606 AddDefaultMatchingRule(); | 615 AddDefaultMatchingRule(); |
| 607 TriggerTabTrackingOnDefaultTab(); | 616 TriggerTabTrackingOnDefaultTab(); |
| 608 OnDataUse(default_data_use()); | 617 OnDataUse(default_data_use()); |
| 609 OnDataUse(default_data_use()); | 618 OnDataUse(default_data_use()); |
| 610 // First data use report should be marked as timed out. | 619 // First data use report should be marked as timed out. |
| 611 histogram_tester.ExpectUniqueSample( | 620 histogram_tester.ExpectUniqueSample( |
| 612 "DataUsage.ReportSubmissionResult", | 621 "DataUsage.ReportSubmissionResult", |
| 613 ExternalDataUseObserver::DATAUSAGE_REPORT_SUBMISSION_TIMED_OUT, 1); | 622 ExternalDataUseObserver::DATAUSAGE_REPORT_SUBMISSION_TIMED_OUT, 1); |
| 614 histogram_tester.ExpectUniqueSample( | 623 histogram_tester.ExpectUniqueSample( |
| 615 "DataUsage.ReportSubmission.Bytes.TimedOut", | 624 "DataUsage.ReportSubmission.Bytes.TimedOut", |
| 616 default_upload_bytes() + default_download_bytes(), 1); | 625 default_upload_bytes() + default_download_bytes(), 1); |
| 617 histogram_tester.ExpectTotalCount(kUMAReportSubmissionDurationHistogram, 0); | 626 histogram_tester.ExpectTotalCount(kUMAReportSubmissionDurationHistogram, 0); |
| 618 } | 627 } |
| 619 | 628 |
| 620 } // namespace android | 629 } // namespace android |
| 621 | 630 |
| 622 } // namespace chrome | 631 } // namespace chrome |
| OLD | NEW |