OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights | 2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights |
3 * reserved. | 3 * reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 3618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3629 return true; | 3629 return true; |
3630 } | 3630 } |
3631 | 3631 |
3632 return false; | 3632 return false; |
3633 } | 3633 } |
3634 | 3634 |
3635 bool HTMLMediaElement::TextTracksVisible() const { | 3635 bool HTMLMediaElement::TextTracksVisible() const { |
3636 return text_tracks_visible_; | 3636 return text_tracks_visible_; |
3637 } | 3637 } |
3638 | 3638 |
3639 static void AssertShadowRootChildren(ShadowRoot& shadow_root) { | 3639 // static |
3640 void HTMLMediaElement::AssertShadowRootChildren(ShadowRoot& shadow_root) { | |
3640 #if DCHECK_IS_ON() | 3641 #if DCHECK_IS_ON() |
3641 // There can be up to two children, either or both of the text | 3642 // There can be up to two children, either or both of the text |
liberato (no reviews please)
2017/04/12 21:57:44
s/two/three/
xjz
2017/04/13 00:08:48
Done. Also rewrite the comment. I missed this afte
| |
3642 // track container and media controls. If both are present, the | 3643 // track container and media controls. If both are present, the |
3643 // text track container must be the first child. | 3644 // text track container must be the first child. |
3644 unsigned number_of_children = shadow_root.CountChildren(); | 3645 unsigned number_of_children = shadow_root.CountChildren(); |
3645 DCHECK_LE(number_of_children, 2u); | 3646 DCHECK_LE(number_of_children, 3u); |
3646 Node* first_child = shadow_root.FirstChild(); | 3647 Node* first_child = shadow_root.FirstChild(); |
3647 Node* last_child = shadow_root.LastChild(); | 3648 Node* last_child = shadow_root.LastChild(); |
3648 if (number_of_children == 1) { | 3649 if (number_of_children == 1) { |
3649 DCHECK(first_child->IsTextTrackContainer() || | 3650 DCHECK(first_child->IsTextTrackContainer() || |
3650 first_child->IsMediaControls()); | 3651 first_child->IsMediaControls() || |
3652 first_child->IsMediaRemotingInterstitial()); | |
3651 } else if (number_of_children == 2) { | 3653 } else if (number_of_children == 2) { |
3652 DCHECK(first_child->IsTextTrackContainer()); | 3654 DCHECK(first_child->IsTextTrackContainer() || |
3655 first_child->IsMediaRemotingInterstitial()); | |
3656 DCHECK(last_child->IsTextTrackContainer() || last_child->IsMediaControls()); | |
3657 if (first_child->IsTextTrackContainer()) | |
3658 DCHECK(last_child->IsMediaControls()); | |
3659 } else if (number_of_children == 3) { | |
3660 Node* second_child = first_child->nextSibling(); | |
3661 DCHECK(first_child->IsMediaRemotingInterstitial()); | |
3662 DCHECK(second_child->IsTextTrackContainer()); | |
3653 DCHECK(last_child->IsMediaControls()); | 3663 DCHECK(last_child->IsMediaControls()); |
3654 } | 3664 } |
3655 #endif | 3665 #endif |
3656 } | 3666 } |
3657 | 3667 |
3658 TextTrackContainer& HTMLMediaElement::EnsureTextTrackContainer() { | 3668 TextTrackContainer& HTMLMediaElement::EnsureTextTrackContainer() { |
3659 ShadowRoot& shadow_root = EnsureUserAgentShadowRoot(); | 3669 ShadowRoot& shadow_root = EnsureUserAgentShadowRoot(); |
3660 AssertShadowRootChildren(shadow_root); | 3670 AssertShadowRootChildren(shadow_root); |
3661 | 3671 |
3662 Node* first_child = shadow_root.FirstChild(); | 3672 Node* first_child = shadow_root.FirstChild(); |
3663 if (first_child && first_child->IsTextTrackContainer()) | 3673 if (first_child && first_child->IsTextTrackContainer()) |
3664 return ToTextTrackContainer(*first_child); | 3674 return ToTextTrackContainer(*first_child); |
3675 Node* to_be_inserted = first_child; | |
3676 | |
3677 if (first_child && first_child->IsMediaRemotingInterstitial()) { | |
3678 Node* second_child = first_child->nextSibling(); | |
3679 if (second_child && second_child->IsTextTrackContainer()) | |
3680 return ToTextTrackContainer(*second_child); | |
3681 to_be_inserted = second_child; | |
3682 } | |
3665 | 3683 |
3666 TextTrackContainer* text_track_container = TextTrackContainer::Create(*this); | 3684 TextTrackContainer* text_track_container = TextTrackContainer::Create(*this); |
3667 | 3685 |
3668 // The text track container should be inserted before the media controls, | 3686 // The text track container should be inserted before the media controls, |
3669 // so that they are rendered behind them. | 3687 // so that they are rendered behind them. |
3670 shadow_root.InsertBefore(text_track_container, first_child); | 3688 shadow_root.InsertBefore(text_track_container, to_be_inserted); |
3671 | 3689 |
3672 AssertShadowRootChildren(shadow_root); | 3690 AssertShadowRootChildren(shadow_root); |
3673 | 3691 |
3674 return *text_track_container; | 3692 return *text_track_container; |
3675 } | 3693 } |
3676 | 3694 |
3677 void HTMLMediaElement::UpdateTextTrackDisplay() { | 3695 void HTMLMediaElement::UpdateTextTrackDisplay() { |
3678 BLINK_MEDIA_LOG << "updateTextTrackDisplay(" << (void*)this << ")"; | 3696 BLINK_MEDIA_LOG << "updateTextTrackDisplay(" << (void*)this << ")"; |
3679 | 3697 |
3680 EnsureTextTrackContainer().UpdateDisplay( | 3698 EnsureTextTrackContainer().UpdateDisplay( |
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4268 kMostlyFillViewportBecomeStableSeconds, BLINK_FROM_HERE); | 4286 kMostlyFillViewportBecomeStableSeconds, BLINK_FROM_HERE); |
4269 } | 4287 } |
4270 | 4288 |
4271 void HTMLMediaElement::ViewportFillDebouncerTimerFired(TimerBase*) { | 4289 void HTMLMediaElement::ViewportFillDebouncerTimerFired(TimerBase*) { |
4272 mostly_filling_viewport_ = true; | 4290 mostly_filling_viewport_ = true; |
4273 if (web_media_player_) | 4291 if (web_media_player_) |
4274 web_media_player_->BecameDominantVisibleContent(mostly_filling_viewport_); | 4292 web_media_player_->BecameDominantVisibleContent(mostly_filling_viewport_); |
4275 } | 4293 } |
4276 | 4294 |
4277 } // namespace blink | 4295 } // namespace blink |
OLD | NEW |