| 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 "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" |
| 11 #include "core/dom/ClientRect.h" | |
| 12 #include "core/dom/Document.h" | 11 #include "core/dom/Document.h" |
| 13 #include "core/dom/ElementTraversal.h" | 12 #include "core/dom/ElementTraversal.h" |
| 14 #include "core/dom/StyleEngine.h" | 13 #include "core/dom/StyleEngine.h" |
| 15 #include "core/events/Event.h" | 14 #include "core/events/Event.h" |
| 16 #include "core/frame/Settings.h" | 15 #include "core/frame/Settings.h" |
| 16 #include "core/geometry/DOMRect.h" |
| 17 #include "core/html/HTMLElement.h" | 17 #include "core/html/HTMLElement.h" |
| 18 #include "core/html/HTMLVideoElement.h" | 18 #include "core/html/HTMLVideoElement.h" |
| 19 #include "core/html/shadow/MediaControlElementTypes.h" | 19 #include "core/html/shadow/MediaControlElementTypes.h" |
| 20 #include "core/input/EventHandler.h" | 20 #include "core/input/EventHandler.h" |
| 21 #include "core/layout/LayoutObject.h" | 21 #include "core/layout/LayoutObject.h" |
| 22 #include "core/loader/EmptyClients.h" | 22 #include "core/loader/EmptyClients.h" |
| 23 #include "core/testing/DummyPageHolder.h" | 23 #include "core/testing/DummyPageHolder.h" |
| 24 #include "modules/media_controls/elements/MediaControlCurrentTimeDisplayElement.
h" | 24 #include "modules/media_controls/elements/MediaControlCurrentTimeDisplayElement.
h" |
| 25 #include "modules/media_controls/elements/MediaControlDownloadButtonElement.h" | 25 #include "modules/media_controls/elements/MediaControlDownloadButtonElement.h" |
| 26 #include "modules/media_controls/elements/MediaControlTimelineElement.h" | 26 #include "modules/media_controls/elements/MediaControlTimelineElement.h" |
| (...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 661 "Media.Timeline.Width.FullscreenPortrait", 0); | 661 "Media.Timeline.Width.FullscreenPortrait", 0); |
| 662 } | 662 } |
| 663 | 663 |
| 664 TEST_F(MediaControlsImplTest, TimelineMetricsClick) { | 664 TEST_F(MediaControlsImplTest, TimelineMetricsClick) { |
| 665 double duration = 540; // 9 minutes | 665 double duration = 540; // 9 minutes |
| 666 LoadMediaWithDuration(duration); | 666 LoadMediaWithDuration(duration); |
| 667 EnsureSizing(); | 667 EnsureSizing(); |
| 668 testing::RunPendingTasks(); | 668 testing::RunPendingTasks(); |
| 669 | 669 |
| 670 ASSERT_TRUE(IsElementVisible(*TimelineElement())); | 670 ASSERT_TRUE(IsElementVisible(*TimelineElement())); |
| 671 ClientRect* timelineRect = TimelineElement()->getBoundingClientRect(); | 671 DOMRect* timelineRect = TimelineElement()->getBoundingClientRect(); |
| 672 ASSERT_LT(0, timelineRect->width()); | 672 ASSERT_LT(0, timelineRect->width()); |
| 673 | 673 |
| 674 EXPECT_EQ(0, MediaControls().MediaElement().currentTime()); | 674 EXPECT_EQ(0, MediaControls().MediaElement().currentTime()); |
| 675 | 675 |
| 676 WebFloatPoint trackCenter(timelineRect->left() + timelineRect->width() / 2, | 676 WebFloatPoint trackCenter(timelineRect->left() + timelineRect->width() / 2, |
| 677 timelineRect->top() + timelineRect->height() / 2); | 677 timelineRect->top() + timelineRect->height() / 2); |
| 678 MouseDownAt(trackCenter); | 678 MouseDownAt(trackCenter); |
| 679 MouseUpAt(trackCenter); | 679 MouseUpAt(trackCenter); |
| 680 testing::RunPendingTasks(); | 680 testing::RunPendingTasks(); |
| 681 | 681 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 694 "Media.Timeline.DragTimeDelta." TIMELINE_W, 0); | 694 "Media.Timeline.DragTimeDelta." TIMELINE_W, 0); |
| 695 } | 695 } |
| 696 | 696 |
| 697 TEST_F(MediaControlsImplTest, TimelineMetricsDragFromCurrentPosition) { | 697 TEST_F(MediaControlsImplTest, TimelineMetricsDragFromCurrentPosition) { |
| 698 double duration = 540; // 9 minutes | 698 double duration = 540; // 9 minutes |
| 699 LoadMediaWithDuration(duration); | 699 LoadMediaWithDuration(duration); |
| 700 EnsureSizing(); | 700 EnsureSizing(); |
| 701 testing::RunPendingTasks(); | 701 testing::RunPendingTasks(); |
| 702 | 702 |
| 703 ASSERT_TRUE(IsElementVisible(*TimelineElement())); | 703 ASSERT_TRUE(IsElementVisible(*TimelineElement())); |
| 704 ClientRect* timeline_rect = TimelineElement()->getBoundingClientRect(); | 704 DOMRect* timeline_rect = TimelineElement()->getBoundingClientRect(); |
| 705 ASSERT_LT(0, timeline_rect->width()); | 705 ASSERT_LT(0, timeline_rect->width()); |
| 706 | 706 |
| 707 EXPECT_EQ(0, MediaControls().MediaElement().currentTime()); | 707 EXPECT_EQ(0, MediaControls().MediaElement().currentTime()); |
| 708 | 708 |
| 709 float y = timeline_rect->top() + timeline_rect->height() / 2; | 709 float y = timeline_rect->top() + timeline_rect->height() / 2; |
| 710 WebFloatPoint thumb(timeline_rect->left(), y); | 710 WebFloatPoint thumb(timeline_rect->left(), y); |
| 711 WebFloatPoint track_two_thirds( | 711 WebFloatPoint track_two_thirds( |
| 712 timeline_rect->left() + timeline_rect->width() * 2 / 3, y); | 712 timeline_rect->left() + timeline_rect->width() * 2 / 3, y); |
| 713 MouseDownAt(thumb); | 713 MouseDownAt(thumb); |
| 714 MouseMoveTo(track_two_thirds); | 714 MouseMoveTo(track_two_thirds); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 730 "Media.Timeline.DragTimeDelta." TIMELINE_W, 40 /* [4m, 8m) */, 1); | 730 "Media.Timeline.DragTimeDelta." TIMELINE_W, 40 /* [4m, 8m) */, 1); |
| 731 } | 731 } |
| 732 | 732 |
| 733 TEST_F(MediaControlsImplTest, TimelineMetricsDragFromElsewhere) { | 733 TEST_F(MediaControlsImplTest, TimelineMetricsDragFromElsewhere) { |
| 734 double duration = 540; // 9 minutes | 734 double duration = 540; // 9 minutes |
| 735 LoadMediaWithDuration(duration); | 735 LoadMediaWithDuration(duration); |
| 736 EnsureSizing(); | 736 EnsureSizing(); |
| 737 testing::RunPendingTasks(); | 737 testing::RunPendingTasks(); |
| 738 | 738 |
| 739 ASSERT_TRUE(IsElementVisible(*TimelineElement())); | 739 ASSERT_TRUE(IsElementVisible(*TimelineElement())); |
| 740 ClientRect* timelineRect = TimelineElement()->getBoundingClientRect(); | 740 DOMRect* timelineRect = TimelineElement()->getBoundingClientRect(); |
| 741 ASSERT_LT(0, timelineRect->width()); | 741 ASSERT_LT(0, timelineRect->width()); |
| 742 | 742 |
| 743 EXPECT_EQ(0, MediaControls().MediaElement().currentTime()); | 743 EXPECT_EQ(0, MediaControls().MediaElement().currentTime()); |
| 744 | 744 |
| 745 float y = timelineRect->top() + timelineRect->height() / 2; | 745 float y = timelineRect->top() + timelineRect->height() / 2; |
| 746 WebFloatPoint trackOneThird( | 746 WebFloatPoint trackOneThird( |
| 747 timelineRect->left() + timelineRect->width() * 1 / 3, y); | 747 timelineRect->left() + timelineRect->width() * 1 / 3, y); |
| 748 WebFloatPoint trackTwoThirds( | 748 WebFloatPoint trackTwoThirds( |
| 749 timelineRect->left() + timelineRect->width() * 2 / 3, y); | 749 timelineRect->left() + timelineRect->width() * 2 / 3, y); |
| 750 MouseDownAt(trackOneThird); | 750 MouseDownAt(trackOneThird); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 767 "Media.Timeline.DragTimeDelta." TIMELINE_W, 39 /* [2m, 4m) */, 1); | 767 "Media.Timeline.DragTimeDelta." TIMELINE_W, 39 /* [2m, 4m) */, 1); |
| 768 } | 768 } |
| 769 | 769 |
| 770 TEST_F(MediaControlsImplTest, TimelineMetricsDragBackAndForth) { | 770 TEST_F(MediaControlsImplTest, TimelineMetricsDragBackAndForth) { |
| 771 double duration = 540; // 9 minutes | 771 double duration = 540; // 9 minutes |
| 772 LoadMediaWithDuration(duration); | 772 LoadMediaWithDuration(duration); |
| 773 EnsureSizing(); | 773 EnsureSizing(); |
| 774 testing::RunPendingTasks(); | 774 testing::RunPendingTasks(); |
| 775 | 775 |
| 776 ASSERT_TRUE(IsElementVisible(*TimelineElement())); | 776 ASSERT_TRUE(IsElementVisible(*TimelineElement())); |
| 777 ClientRect* timelineRect = TimelineElement()->getBoundingClientRect(); | 777 DOMRect* timelineRect = TimelineElement()->getBoundingClientRect(); |
| 778 ASSERT_LT(0, timelineRect->width()); | 778 ASSERT_LT(0, timelineRect->width()); |
| 779 | 779 |
| 780 EXPECT_EQ(0, MediaControls().MediaElement().currentTime()); | 780 EXPECT_EQ(0, MediaControls().MediaElement().currentTime()); |
| 781 | 781 |
| 782 float y = timelineRect->top() + timelineRect->height() / 2; | 782 float y = timelineRect->top() + timelineRect->height() / 2; |
| 783 WebFloatPoint trackTwoThirds( | 783 WebFloatPoint trackTwoThirds( |
| 784 timelineRect->left() + timelineRect->width() * 2 / 3, y); | 784 timelineRect->left() + timelineRect->width() * 2 / 3, y); |
| 785 WebFloatPoint trackEnd(timelineRect->left() + timelineRect->width(), y); | 785 WebFloatPoint trackEnd(timelineRect->left() + timelineRect->width(), y); |
| 786 WebFloatPoint trackOneThird( | 786 WebFloatPoint trackOneThird( |
| 787 timelineRect->left() + timelineRect->width() * 1 / 3, y); | 787 timelineRect->left() + timelineRect->width() * 1 / 3, y); |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 909 { | 909 { |
| 910 Persistent<HTMLMediaElement> video_holder = element; | 910 Persistent<HTMLMediaElement> video_holder = element; |
| 911 page_holder->GetDocument().body()->RemoveChild(element); | 911 page_holder->GetDocument().body()->RemoveChild(element); |
| 912 page_holder->GetDocument().body()->AppendChild(video_holder.Get()); | 912 page_holder->GetDocument().body()->AppendChild(video_holder.Get()); |
| 913 EXPECT_TRUE(remote_playback->HasEventListeners()); | 913 EXPECT_TRUE(remote_playback->HasEventListeners()); |
| 914 EXPECT_TRUE(HasAvailabilityCallbacks(remote_playback)); | 914 EXPECT_TRUE(HasAvailabilityCallbacks(remote_playback)); |
| 915 } | 915 } |
| 916 } | 916 } |
| 917 | 917 |
| 918 } // namespace blink | 918 } // namespace blink |
| OLD | NEW |