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

Side by Side Diff: chrome/browser/android/data_usage/external_data_use_observer_unittest.cc

Issue 1837223002: Buffer UI navigation events in DataUseTabModel until rule fetch (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed tbansal comments Created 4 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 unified diff | Download patch
OLDNEW
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 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 } 383 }
384 384
385 // Tests the matching rule fetch behavior when the external control app is 385 // Tests the matching rule fetch behavior when the external control app is
386 // installed and not installed. Matching rules should be fetched when control 386 // installed and not installed. Matching rules should be fetched when control
387 // app gets installed. If control app is installed and no valid rules are found, 387 // app gets installed. If control app is installed and no valid rules are found,
388 // matching rules are fetched on every navigation. Rules are not fetched if 388 // matching rules are fetched on every navigation. Rules are not fetched if
389 // control app is not installed or if more than zero valid rules have been 389 // control app is not installed or if more than zero valid rules have been
390 // fetched. 390 // fetched.
391 TEST_F(ExternalDataUseObserverTest, MatchingRuleFetchOnControlAppInstall) { 391 TEST_F(ExternalDataUseObserverTest, MatchingRuleFetchOnControlAppInstall) {
392 { 392 {
393 // Matching rules not fetched on navigation if control app is not installed. 393 // Matching rules not fetched on navigation if control app is not installed,
394 // and navigation events will be buffered.
394 external_data_use_observer()->last_matching_rules_fetch_time_ = 395 external_data_use_observer()->last_matching_rules_fetch_time_ =
395 base::TimeTicks(); 396 base::TimeTicks();
396 external_data_use_observer() 397 external_data_use_observer()
397 ->data_use_tab_model_->is_control_app_installed_ = false; 398 ->data_use_tab_model_->is_control_app_installed_ = false;
398 base::HistogramTester histogram_tester; 399 base::HistogramTester histogram_tester;
399 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent( 400 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent(
400 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL), 401 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL),
401 std::string()); 402 std::string());
402 base::RunLoop().RunUntilIdle(); 403 base::RunLoop().RunUntilIdle();
403 histogram_tester.ExpectTotalCount("DataUsage.MatchingRulesCount.Valid", 0); 404 histogram_tester.ExpectTotalCount("DataUsage.MatchingRulesCount.Valid", 0);
405 EXPECT_EQ(1, external_data_use_observer()
406 ->data_use_tab_model_->data_use_ui_navigations_->size());
407 external_data_use_observer()
408 ->data_use_tab_model_->data_use_ui_navigations_->clear();
404 } 409 }
405 410
406 { 411 {
407 // Matching rules are fetched when control app is installed. 412 // Matching rules are fetched when control app is installed.
408 base::HistogramTester histogram_tester; 413 base::HistogramTester histogram_tester;
409 external_data_use_observer() 414 external_data_use_observer()
410 ->data_use_tab_model_->OnControlAppInstallStateChange(true); 415 ->data_use_tab_model_->OnControlAppInstallStateChange(true);
411 base::RunLoop().RunUntilIdle(); 416 base::RunLoop().RunUntilIdle();
412 histogram_tester.ExpectTotalCount("DataUsage.MatchingRulesCount.Valid", 1); 417 histogram_tester.ExpectTotalCount("DataUsage.MatchingRulesCount.Valid", 1);
418 EXPECT_FALSE(external_data_use_observer()
419 ->data_use_tab_model_->data_use_ui_navigations_.get());
413 } 420 }
414 421
415 { 422 {
416 // Matching rules fetched on every navigation if control app is installed 423 // Matching rules fetched on every navigation if control app is installed
417 // and zero rules are available. 424 // and zero rules are available.
418 external_data_use_observer()->last_matching_rules_fetch_time_ = 425 external_data_use_observer()->last_matching_rules_fetch_time_ =
419 base::TimeTicks(); 426 base::TimeTicks();
420 base::HistogramTester histogram_tester; 427 base::HistogramTester histogram_tester;
421 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent( 428 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent(
422 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL), 429 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL),
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 // First data use report should be marked as timed out. 638 // First data use report should be marked as timed out.
632 histogram_tester.ExpectUniqueSample( 639 histogram_tester.ExpectUniqueSample(
633 "DataUsage.ReportSubmissionResult", 640 "DataUsage.ReportSubmissionResult",
634 ExternalDataUseObserver::DATAUSAGE_REPORT_SUBMISSION_TIMED_OUT, 1); 641 ExternalDataUseObserver::DATAUSAGE_REPORT_SUBMISSION_TIMED_OUT, 1);
635 histogram_tester.ExpectUniqueSample( 642 histogram_tester.ExpectUniqueSample(
636 "DataUsage.ReportSubmission.Bytes.TimedOut", 643 "DataUsage.ReportSubmission.Bytes.TimedOut",
637 default_upload_bytes() + default_download_bytes(), 1); 644 default_upload_bytes() + default_download_bytes(), 1);
638 histogram_tester.ExpectTotalCount(kUMAReportSubmissionDurationHistogram, 0); 645 histogram_tester.ExpectTotalCount(kUMAReportSubmissionDurationHistogram, 0);
639 } 646 }
640 647
648 // Tests that UI navigation events are buffered until control app not installed
649 // callback is received.
650 TEST_F(ExternalDataUseObserverTest,
651 ProcessBufferedNavigationEventsAfterControlAppNotInstalled) {
652 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent(
653 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL),
654 std::string());
655 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent(
656 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL),
657 std::string());
658 EXPECT_EQ(2, external_data_use_observer()
659 ->data_use_tab_model_->data_use_ui_navigations_->size());
660 external_data_use_observer()
661 ->data_use_tab_model_->OnControlAppInstallStateChange(false);
662 base::RunLoop().RunUntilIdle();
663 EXPECT_FALSE(external_data_use_observer()
664 ->data_use_tab_model_->data_use_ui_navigations_.get());
665 }
666
667 // Tests that UI navigation events are buffered until control app is installed
668 // and matching rules are fetched.
669 TEST_F(ExternalDataUseObserverTest,
670 ProcessBufferedNavigationEventsAfterRuleFetch) {
671 external_data_use_observer()->data_use_tab_model_->is_control_app_installed_ =
672 false;
673 base::HistogramTester histogram_tester;
674 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent(
675 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL),
676 std::string());
677 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent(
678 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL),
679 std::string());
680 EXPECT_EQ(2, external_data_use_observer()
681 ->data_use_tab_model_->data_use_ui_navigations_->size());
682 external_data_use_observer()
683 ->data_use_tab_model_->OnControlAppInstallStateChange(true);
684 base::RunLoop().RunUntilIdle();
685 histogram_tester.ExpectTotalCount("DataUsage.MatchingRulesCount.Valid", 3);
686 EXPECT_FALSE(external_data_use_observer()
687 ->data_use_tab_model_->data_use_ui_navigations_.get());
688 }
689
690 // Tests that UI navigation events are buffered until the buffer reaches a
691 // maximum imposed limit.
692 TEST_F(ExternalDataUseObserverTest,
693 ProcessBufferedNavigationEventsAfterMaxLimit) {
694 const uint32_t kDefaultMaxNavigationEventsBuffered = 1000;
695 // Expect that the max imposed limit will be reached, and the buffer will be
696 // cleared.
697 for (size_t count = 1; count < kDefaultMaxNavigationEventsBuffered; ++count) {
tbansal1 2016/03/29 18:19:04 start at 0?
Raj 2016/03/29 19:45:54 Done.
698 external_data_use_observer()->data_use_tab_model_->OnNavigationEvent(
699 kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL),
700 std::string());
701 if (!external_data_use_observer()
702 ->data_use_tab_model_->data_use_ui_navigations_) {
703 // The max limit is reached.
704 break;
705 }
706 EXPECT_EQ(count,
707 external_data_use_observer()
708 ->data_use_tab_model_->data_use_ui_navigations_->size());
709 }
710 EXPECT_FALSE(external_data_use_observer()
711 ->data_use_tab_model_->data_use_ui_navigations_.get());
712 }
713
641 } // namespace android 714 } // namespace android
642 715
643 } // namespace chrome 716 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698