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

Side by Side Diff: third_party/WebKit/Source/modules/media_controls/MediaControlsImplTest.cpp

Issue 2919503004: [Media Controls] Fix and re-enable failing metrics tests on Android (Closed)
Patch Set: Created 3 years, 6 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "modules/media_controls/MediaControlsImpl.h" 5 #include "modules/media_controls/MediaControlsImpl.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <memory> 8 #include <memory>
9 #include "core/HTMLNames.h" 9 #include "core/HTMLNames.h"
10 #include "core/css/StylePropertySet.h" 10 #include "core/css/StylePropertySet.h"
(...skipping 21 matching lines...) Expand all
32 #include "platform/testing/HistogramTester.h" 32 #include "platform/testing/HistogramTester.h"
33 #include "platform/testing/TestingPlatformSupport.h" 33 #include "platform/testing/TestingPlatformSupport.h"
34 #include "platform/testing/UnitTestHelpers.h" 34 #include "platform/testing/UnitTestHelpers.h"
35 #include "public/platform/WebMouseEvent.h" 35 #include "public/platform/WebMouseEvent.h"
36 #include "public/platform/WebScreenInfo.h" 36 #include "public/platform/WebScreenInfo.h"
37 #include "public/platform/WebSize.h" 37 #include "public/platform/WebSize.h"
38 #include "public/platform/modules/remoteplayback/WebRemotePlaybackAvailability.h " 38 #include "public/platform/modules/remoteplayback/WebRemotePlaybackAvailability.h "
39 #include "public/platform/modules/remoteplayback/WebRemotePlaybackClient.h" 39 #include "public/platform/modules/remoteplayback/WebRemotePlaybackClient.h"
40 #include "testing/gtest/include/gtest/gtest.h" 40 #include "testing/gtest/include/gtest/gtest.h"
41 41
42 // The MediaTimelineWidths histogram suffix expected to be encountered in these
43 // tests. Depends on the OS, since Android sizes its timeline differently.
44 #if OS(ANDROID)
45 #define TIMELINE_W "80_127"
46 #else
47 #define TIMELINE_W "128_255"
48 #endif
49
42 namespace blink { 50 namespace blink {
43 51
44 namespace { 52 namespace {
45 53
46 class MockChromeClient : public EmptyChromeClient { 54 class MockChromeClient : public EmptyChromeClient {
47 public: 55 public:
48 // EmptyChromeClient overrides: 56 // EmptyChromeClient overrides:
49 WebScreenInfo GetScreenInfo() const override { 57 WebScreenInfo GetScreenInfo() const override {
50 WebScreenInfo screen_info; 58 WebScreenInfo screen_info;
51 screen_info.orientation_type = kWebScreenOrientationLandscapePrimary; 59 screen_info.orientation_type = kWebScreenOrientationLandscapePrimary;
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 "Media.Timeline.Width.InlineLandscape", 619 "Media.Timeline.Width.InlineLandscape",
612 timeline->getBoundingClientRect()->width(), 1); 620 timeline->getBoundingClientRect()->width(), 1);
613 GetHistogramTester().ExpectTotalCount("Media.Timeline.Width.InlinePortrait", 621 GetHistogramTester().ExpectTotalCount("Media.Timeline.Width.InlinePortrait",
614 0); 622 0);
615 GetHistogramTester().ExpectTotalCount( 623 GetHistogramTester().ExpectTotalCount(
616 "Media.Timeline.Width.FullscreenLandscape", 0); 624 "Media.Timeline.Width.FullscreenLandscape", 0);
617 GetHistogramTester().ExpectTotalCount( 625 GetHistogramTester().ExpectTotalCount(
618 "Media.Timeline.Width.FullscreenPortrait", 0); 626 "Media.Timeline.Width.FullscreenPortrait", 0);
619 } 627 }
620 628
621 // TODO(johnme): Fix and re-enable this on Android. 629 TEST_F(MediaControlsImplTest, TimelineMetricsClick) {
622 #if OS(ANDROID)
623 #define MAYBE_TimelineMetricsClick DISABLED_TimelineMetricsClick
624 #else
625 #define MAYBE_TimelineMetricsClick TimelineMetricsClick
626 #endif
627 TEST_F(MediaControlsImplTest, MAYBE_TimelineMetricsClick) {
628 double duration = 540; // 9 minutes 630 double duration = 540; // 9 minutes
629 LoadMediaWithDuration(duration); 631 LoadMediaWithDuration(duration);
630 EnsureSizing(); 632 EnsureSizing();
631 testing::RunPendingTasks(); 633 testing::RunPendingTasks();
632 634
633 ASSERT_TRUE(IsElementVisible(*TimelineElement())); 635 ASSERT_TRUE(IsElementVisible(*TimelineElement()));
634 ClientRect* timelineRect = TimelineElement()->getBoundingClientRect(); 636 ClientRect* timelineRect = TimelineElement()->getBoundingClientRect();
635 ASSERT_LT(0, timelineRect->width()); 637 ASSERT_LT(0, timelineRect->width());
636 638
637 EXPECT_EQ(0, MediaControls().MediaElement().currentTime()); 639 EXPECT_EQ(0, MediaControls().MediaElement().currentTime());
638 640
639 WebFloatPoint trackCenter(timelineRect->left() + timelineRect->width() / 2, 641 WebFloatPoint trackCenter(timelineRect->left() + timelineRect->width() / 2,
640 timelineRect->top() + timelineRect->height() / 2); 642 timelineRect->top() + timelineRect->height() / 2);
641 MouseDownAt(trackCenter); 643 MouseDownAt(trackCenter);
642 MouseUpAt(trackCenter); 644 MouseUpAt(trackCenter);
643 testing::RunPendingTasks(); 645 testing::RunPendingTasks();
644 646
645 EXPECT_LE(0.49 * duration, MediaControls().MediaElement().currentTime()); 647 EXPECT_LE(0.49 * duration, MediaControls().MediaElement().currentTime());
646 EXPECT_GE(0.51 * duration, MediaControls().MediaElement().currentTime()); 648 EXPECT_GE(0.51 * duration, MediaControls().MediaElement().currentTime());
647 649
648 GetHistogramTester().ExpectUniqueSample("Media.Timeline.SeekType.128_255", 650 GetHistogramTester().ExpectUniqueSample("Media.Timeline.SeekType." TIMELINE_W,
649 0 /* SeekType::kClick */, 1); 651 0 /* SeekType::kClick */, 1);
650 GetHistogramTester().ExpectTotalCount( 652 GetHistogramTester().ExpectTotalCount(
651 "Media.Timeline.DragGestureDuration.128_255", 0); 653 "Media.Timeline.DragGestureDuration." TIMELINE_W, 0);
652 GetHistogramTester().ExpectTotalCount("Media.Timeline.DragPercent.128_255",
653 0);
654 GetHistogramTester().ExpectTotalCount( 654 GetHistogramTester().ExpectTotalCount(
655 "Media.Timeline.DragSumAbsTimeDelta.128_255", 0); 655 "Media.Timeline.DragPercent." TIMELINE_W, 0);
656 GetHistogramTester().ExpectTotalCount("Media.Timeline.DragTimeDelta.128_255", 656 GetHistogramTester().ExpectTotalCount(
657 0); 657 "Media.Timeline.DragSumAbsTimeDelta." TIMELINE_W, 0);
658 GetHistogramTester().ExpectTotalCount(
659 "Media.Timeline.DragTimeDelta." TIMELINE_W, 0);
658 } 660 }
659 661
660 // TODO(johnme): Fix and re-enable this on Android. 662 TEST_F(MediaControlsImplTest, TimelineMetricsDragFromCurrentPosition) {
661 #if OS(ANDROID)
662 #define MAYBE_TimelineMetricsDragFromCurrentPosition \
663 DISABLED_TimelineMetricsDragFromCurrentPosition
664 #else
665 #define MAYBE_TimelineMetricsDragFromCurrentPosition \
666 TimelineMetricsDragFromCurrentPosition
667 #endif
668 TEST_F(MediaControlsImplTest, MAYBE_TimelineMetricsDragFromCurrentPosition) {
669 double duration = 540; // 9 minutes 663 double duration = 540; // 9 minutes
670 LoadMediaWithDuration(duration); 664 LoadMediaWithDuration(duration);
671 EnsureSizing(); 665 EnsureSizing();
672 testing::RunPendingTasks(); 666 testing::RunPendingTasks();
673 667
674 ASSERT_TRUE(IsElementVisible(*TimelineElement())); 668 ASSERT_TRUE(IsElementVisible(*TimelineElement()));
675 ClientRect* timeline_rect = TimelineElement()->getBoundingClientRect(); 669 ClientRect* timeline_rect = TimelineElement()->getBoundingClientRect();
676 ASSERT_LT(0, timeline_rect->width()); 670 ASSERT_LT(0, timeline_rect->width());
677 671
678 EXPECT_EQ(0, MediaControls().MediaElement().currentTime()); 672 EXPECT_EQ(0, MediaControls().MediaElement().currentTime());
679 673
680 float y = timeline_rect->top() + timeline_rect->height() / 2; 674 float y = timeline_rect->top() + timeline_rect->height() / 2;
681 WebFloatPoint thumb(timeline_rect->left(), y); 675 WebFloatPoint thumb(timeline_rect->left(), y);
682 WebFloatPoint track_two_thirds( 676 WebFloatPoint track_two_thirds(
683 timeline_rect->left() + timeline_rect->width() * 2 / 3, y); 677 timeline_rect->left() + timeline_rect->width() * 2 / 3, y);
684 MouseDownAt(thumb); 678 MouseDownAt(thumb);
685 MouseMoveTo(track_two_thirds); 679 MouseMoveTo(track_two_thirds);
686 MouseUpAt(track_two_thirds); 680 MouseUpAt(track_two_thirds);
687 681
688 EXPECT_LE(0.66 * duration, MediaControls().MediaElement().currentTime()); 682 EXPECT_LE(0.66 * duration, MediaControls().MediaElement().currentTime());
689 EXPECT_GE(0.68 * duration, MediaControls().MediaElement().currentTime()); 683 EXPECT_GE(0.68 * duration, MediaControls().MediaElement().currentTime());
690 684
691 GetHistogramTester().ExpectUniqueSample( 685 GetHistogramTester().ExpectUniqueSample(
692 "Media.Timeline.SeekType.128_255", 686 "Media.Timeline.SeekType." TIMELINE_W,
693 1 /* SeekType::kDragFromCurrentPosition */, 1); 687 1 /* SeekType::kDragFromCurrentPosition */, 1);
694 GetHistogramTester().ExpectTotalCount( 688 GetHistogramTester().ExpectTotalCount(
695 "Media.Timeline.DragGestureDuration.128_255", 1); 689 "Media.Timeline.DragGestureDuration." TIMELINE_W, 1);
696 GetHistogramTester().ExpectUniqueSample("Media.Timeline.DragPercent.128_255",
697 47 /* [60.0%, 70.0%) */, 1);
698 GetHistogramTester().ExpectUniqueSample( 690 GetHistogramTester().ExpectUniqueSample(
699 "Media.Timeline.DragSumAbsTimeDelta.128_255", 16 /* [4m, 8m) */, 1); 691 "Media.Timeline.DragPercent." TIMELINE_W, 47 /* [60.0%, 70.0%) */, 1);
700 GetHistogramTester().ExpectUniqueSample( 692 GetHistogramTester().ExpectUniqueSample(
701 "Media.Timeline.DragTimeDelta.128_255", 40 /* [4m, 8m) */, 1); 693 "Media.Timeline.DragSumAbsTimeDelta." TIMELINE_W, 16 /* [4m, 8m) */, 1);
694 GetHistogramTester().ExpectUniqueSample(
695 "Media.Timeline.DragTimeDelta." TIMELINE_W, 40 /* [4m, 8m) */, 1);
702 } 696 }
703 697
704 // TODO(johnme): Fix and re-enable this on Android. 698 TEST_F(MediaControlsImplTest, TimelineMetricsDragFromElsewhere) {
705 #if OS(ANDROID)
706 #define MAYBE_TimelineMetricsDragFromElsewhere \
707 DISABLED_TimelineMetricsDragFromElsewhere
708 #else
709 #define MAYBE_TimelineMetricsDragFromElsewhere TimelineMetricsDragFromElsewhere
710 #endif
711 TEST_F(MediaControlsImplTest, MAYBE_TimelineMetricsDragFromElsewhere) {
712 double duration = 540; // 9 minutes 699 double duration = 540; // 9 minutes
713 LoadMediaWithDuration(duration); 700 LoadMediaWithDuration(duration);
714 EnsureSizing(); 701 EnsureSizing();
715 testing::RunPendingTasks(); 702 testing::RunPendingTasks();
716 703
717 ASSERT_TRUE(IsElementVisible(*TimelineElement())); 704 ASSERT_TRUE(IsElementVisible(*TimelineElement()));
718 ClientRect* timelineRect = TimelineElement()->getBoundingClientRect(); 705 ClientRect* timelineRect = TimelineElement()->getBoundingClientRect();
719 ASSERT_LT(0, timelineRect->width()); 706 ASSERT_LT(0, timelineRect->width());
720 707
721 EXPECT_EQ(0, MediaControls().MediaElement().currentTime()); 708 EXPECT_EQ(0, MediaControls().MediaElement().currentTime());
722 709
723 float y = timelineRect->top() + timelineRect->height() / 2; 710 float y = timelineRect->top() + timelineRect->height() / 2;
724 WebFloatPoint trackOneThird( 711 WebFloatPoint trackOneThird(
725 timelineRect->left() + timelineRect->width() * 1 / 3, y); 712 timelineRect->left() + timelineRect->width() * 1 / 3, y);
726 WebFloatPoint trackTwoThirds( 713 WebFloatPoint trackTwoThirds(
727 timelineRect->left() + timelineRect->width() * 2 / 3, y); 714 timelineRect->left() + timelineRect->width() * 2 / 3, y);
728 MouseDownAt(trackOneThird); 715 MouseDownAt(trackOneThird);
729 MouseMoveTo(trackTwoThirds); 716 MouseMoveTo(trackTwoThirds);
730 MouseUpAt(trackTwoThirds); 717 MouseUpAt(trackTwoThirds);
731 718
732 EXPECT_LE(0.66 * duration, MediaControls().MediaElement().currentTime()); 719 EXPECT_LE(0.66 * duration, MediaControls().MediaElement().currentTime());
733 EXPECT_GE(0.68 * duration, MediaControls().MediaElement().currentTime()); 720 EXPECT_GE(0.68 * duration, MediaControls().MediaElement().currentTime());
734 721
735 GetHistogramTester().ExpectUniqueSample("Media.Timeline.SeekType.128_255", 722 GetHistogramTester().ExpectUniqueSample("Media.Timeline.SeekType." TIMELINE_W,
736 2 /* SeekType::kDragFromElsewhere */, 723 2 /* SeekType::kDragFromElsewhere */,
737 1); 724 1);
738 GetHistogramTester().ExpectTotalCount( 725 GetHistogramTester().ExpectTotalCount(
739 "Media.Timeline.DragGestureDuration.128_255", 1); 726 "Media.Timeline.DragGestureDuration." TIMELINE_W, 1);
740 GetHistogramTester().ExpectUniqueSample("Media.Timeline.DragPercent.128_255",
741 42 /* [30.0%, 35.0%) */, 1);
742 GetHistogramTester().ExpectUniqueSample( 727 GetHistogramTester().ExpectUniqueSample(
743 "Media.Timeline.DragSumAbsTimeDelta.128_255", 15 /* [2m, 4m) */, 1); 728 "Media.Timeline.DragPercent." TIMELINE_W, 42 /* [30.0%, 35.0%) */, 1);
744 GetHistogramTester().ExpectUniqueSample( 729 GetHistogramTester().ExpectUniqueSample(
745 "Media.Timeline.DragTimeDelta.128_255", 39 /* [2m, 4m) */, 1); 730 "Media.Timeline.DragSumAbsTimeDelta." TIMELINE_W, 15 /* [2m, 4m) */, 1);
731 GetHistogramTester().ExpectUniqueSample(
732 "Media.Timeline.DragTimeDelta." TIMELINE_W, 39 /* [2m, 4m) */, 1);
746 } 733 }
747 734
748 // TODO(johnme): Fix and re-enable this on Android. 735 TEST_F(MediaControlsImplTest, TimelineMetricsDragBackAndForth) {
749 #if OS(ANDROID)
750 #define MAYBE_TimelineMetricsDragBackAndForth \
751 DISABLED_TimelineMetricsDragBackAndForth
752 #else
753 #define MAYBE_TimelineMetricsDragBackAndForth TimelineMetricsDragBackAndForth
754 #endif
755 TEST_F(MediaControlsImplTest, MAYBE_TimelineMetricsDragBackAndForth) {
756 double duration = 540; // 9 minutes 736 double duration = 540; // 9 minutes
757 LoadMediaWithDuration(duration); 737 LoadMediaWithDuration(duration);
758 EnsureSizing(); 738 EnsureSizing();
759 testing::RunPendingTasks(); 739 testing::RunPendingTasks();
760 740
761 ASSERT_TRUE(IsElementVisible(*TimelineElement())); 741 ASSERT_TRUE(IsElementVisible(*TimelineElement()));
762 ClientRect* timelineRect = TimelineElement()->getBoundingClientRect(); 742 ClientRect* timelineRect = TimelineElement()->getBoundingClientRect();
763 ASSERT_LT(0, timelineRect->width()); 743 ASSERT_LT(0, timelineRect->width());
764 744
765 EXPECT_EQ(0, MediaControls().MediaElement().currentTime()); 745 EXPECT_EQ(0, MediaControls().MediaElement().currentTime());
766 746
767 float y = timelineRect->top() + timelineRect->height() / 2; 747 float y = timelineRect->top() + timelineRect->height() / 2;
768 WebFloatPoint trackTwoThirds( 748 WebFloatPoint trackTwoThirds(
769 timelineRect->left() + timelineRect->width() * 2 / 3, y); 749 timelineRect->left() + timelineRect->width() * 2 / 3, y);
770 WebFloatPoint trackEnd(timelineRect->left() + timelineRect->width(), y); 750 WebFloatPoint trackEnd(timelineRect->left() + timelineRect->width(), y);
771 WebFloatPoint trackOneThird( 751 WebFloatPoint trackOneThird(
772 timelineRect->left() + timelineRect->width() * 1 / 3, y); 752 timelineRect->left() + timelineRect->width() * 1 / 3, y);
773 MouseDownAt(trackTwoThirds); 753 MouseDownAt(trackTwoThirds);
774 MouseMoveTo(trackEnd); 754 MouseMoveTo(trackEnd);
775 MouseMoveTo(trackOneThird); 755 MouseMoveTo(trackOneThird);
776 MouseUpAt(trackOneThird); 756 MouseUpAt(trackOneThird);
777 757
778 EXPECT_LE(0.32 * duration, MediaControls().MediaElement().currentTime()); 758 EXPECT_LE(0.32 * duration, MediaControls().MediaElement().currentTime());
779 EXPECT_GE(0.34 * duration, MediaControls().MediaElement().currentTime()); 759 EXPECT_GE(0.34 * duration, MediaControls().MediaElement().currentTime());
780 760
781 GetHistogramTester().ExpectUniqueSample("Media.Timeline.SeekType.128_255", 761 GetHistogramTester().ExpectUniqueSample("Media.Timeline.SeekType." TIMELINE_W,
782 2 /* SeekType::kDragFromElsewhere */, 762 2 /* SeekType::kDragFromElsewhere */,
783 1); 763 1);
784 GetHistogramTester().ExpectTotalCount( 764 GetHistogramTester().ExpectTotalCount(
785 "Media.Timeline.DragGestureDuration.128_255", 1); 765 "Media.Timeline.DragGestureDuration." TIMELINE_W, 1);
786 GetHistogramTester().ExpectUniqueSample("Media.Timeline.DragPercent.128_255",
787 8 /* (-35.0%, -30.0%] */, 1);
788 GetHistogramTester().ExpectUniqueSample( 766 GetHistogramTester().ExpectUniqueSample(
789 "Media.Timeline.DragSumAbsTimeDelta.128_255", 17 /* [8m, 15m) */, 1); 767 "Media.Timeline.DragPercent." TIMELINE_W, 8 /* (-35.0%, -30.0%] */, 1);
790 GetHistogramTester().ExpectUniqueSample( 768 GetHistogramTester().ExpectUniqueSample(
791 "Media.Timeline.DragTimeDelta.128_255", 9 /* (-4m, -2m] */, 1); 769 "Media.Timeline.DragSumAbsTimeDelta." TIMELINE_W, 17 /* [8m, 15m) */, 1);
770 GetHistogramTester().ExpectUniqueSample(
771 "Media.Timeline.DragTimeDelta." TIMELINE_W, 9 /* (-4m, -2m] */, 1);
792 } 772 }
793 773
794 namespace { 774 namespace {
795 775
796 class MediaControlsImplTestWithMockScheduler : public MediaControlsImplTest { 776 class MediaControlsImplTestWithMockScheduler : public MediaControlsImplTest {
797 protected: 777 protected:
798 void SetUp() override { 778 void SetUp() override {
799 // DocumentParserTiming has DCHECKS to make sure time > 0.0. 779 // DocumentParserTiming has DCHECKS to make sure time > 0.0.
800 platform_->AdvanceClockSeconds(1); 780 platform_->AdvanceClockSeconds(1);
801 781
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 { 874 {
895 Persistent<HTMLMediaElement> video_holder = element; 875 Persistent<HTMLMediaElement> video_holder = element;
896 page_holder->GetDocument().body()->RemoveChild(element); 876 page_holder->GetDocument().body()->RemoveChild(element);
897 page_holder->GetDocument().body()->AppendChild(video_holder.Get()); 877 page_holder->GetDocument().body()->AppendChild(video_holder.Get());
898 EXPECT_TRUE(remote_playback->HasEventListeners()); 878 EXPECT_TRUE(remote_playback->HasEventListeners());
899 EXPECT_TRUE(HasAvailabilityCallbacks(remote_playback)); 879 EXPECT_TRUE(HasAvailabilityCallbacks(remote_playback));
900 } 880 }
901 } 881 }
902 882
903 } // namespace blink 883 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698