Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 3 * Copyright (C) 2011, 2012 Google Inc. All rights 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 27 matching lines...) Expand all Loading... | |
| 38 #include "core/frame/UseCounter.h" | 38 #include "core/frame/UseCounter.h" |
| 39 #include "core/html/HTMLMediaElement.h" | 39 #include "core/html/HTMLMediaElement.h" |
| 40 #include "core/html/HTMLVideoElement.h" | 40 #include "core/html/HTMLVideoElement.h" |
| 41 #include "core/html/media/HTMLMediaElementControlsList.h" | 41 #include "core/html/media/HTMLMediaElementControlsList.h" |
| 42 #include "core/html/track/TextTrackContainer.h" | 42 #include "core/html/track/TextTrackContainer.h" |
| 43 #include "core/html/track/TextTrackList.h" | 43 #include "core/html/track/TextTrackList.h" |
| 44 #include "core/layout/LayoutObject.h" | 44 #include "core/layout/LayoutObject.h" |
| 45 #include "core/layout/LayoutTheme.h" | 45 #include "core/layout/LayoutTheme.h" |
| 46 #include "modules/media_controls/MediaControlsMediaEventListener.h" | 46 #include "modules/media_controls/MediaControlsMediaEventListener.h" |
| 47 #include "modules/media_controls/MediaControlsOrientationLockDelegate.h" | 47 #include "modules/media_controls/MediaControlsOrientationLockDelegate.h" |
| 48 #include "modules/media_controls/MediaControlsRotateToFullscreenDelegate.h" | |
| 48 #include "modules/media_controls/MediaControlsWindowEventListener.h" | 49 #include "modules/media_controls/MediaControlsWindowEventListener.h" |
| 49 #include "modules/media_controls/elements/MediaControlCastButtonElement.h" | 50 #include "modules/media_controls/elements/MediaControlCastButtonElement.h" |
| 50 #include "modules/media_controls/elements/MediaControlCurrentTimeDisplayElement. h" | 51 #include "modules/media_controls/elements/MediaControlCurrentTimeDisplayElement. h" |
| 51 #include "modules/media_controls/elements/MediaControlDownloadButtonElement.h" | 52 #include "modules/media_controls/elements/MediaControlDownloadButtonElement.h" |
| 52 #include "modules/media_controls/elements/MediaControlFullscreenButtonElement.h" | 53 #include "modules/media_controls/elements/MediaControlFullscreenButtonElement.h" |
| 53 #include "modules/media_controls/elements/MediaControlMuteButtonElement.h" | 54 #include "modules/media_controls/elements/MediaControlMuteButtonElement.h" |
| 54 #include "modules/media_controls/elements/MediaControlOverflowMenuButtonElement. h" | 55 #include "modules/media_controls/elements/MediaControlOverflowMenuButtonElement. h" |
| 55 #include "modules/media_controls/elements/MediaControlOverflowMenuListElement.h" | 56 #include "modules/media_controls/elements/MediaControlOverflowMenuListElement.h" |
| 56 #include "modules/media_controls/elements/MediaControlOverlayEnclosureElement.h" | 57 #include "modules/media_controls/elements/MediaControlOverlayEnclosureElement.h" |
| 57 #include "modules/media_controls/elements/MediaControlOverlayPlayButtonElement.h " | 58 #include "modules/media_controls/elements/MediaControlOverlayPlayButtonElement.h " |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 216 overflow_list_(nullptr), | 217 overflow_list_(nullptr), |
| 217 cast_button_(nullptr), | 218 cast_button_(nullptr), |
| 218 fullscreen_button_(nullptr), | 219 fullscreen_button_(nullptr), |
| 219 download_button_(nullptr), | 220 download_button_(nullptr), |
| 220 media_event_listener_(new MediaControlsMediaEventListener(this)), | 221 media_event_listener_(new MediaControlsMediaEventListener(this)), |
| 221 window_event_listener_(MediaControlsWindowEventListener::Create( | 222 window_event_listener_(MediaControlsWindowEventListener::Create( |
| 222 this, | 223 this, |
| 223 WTF::Bind(&MediaControlsImpl::HideAllMenus, | 224 WTF::Bind(&MediaControlsImpl::HideAllMenus, |
| 224 WrapWeakPersistent(this)))), | 225 WrapWeakPersistent(this)))), |
| 225 orientation_lock_delegate_(nullptr), | 226 orientation_lock_delegate_(nullptr), |
| 227 rotate_to_fullscreen_delegate_(nullptr), | |
| 226 hide_media_controls_timer_( | 228 hide_media_controls_timer_( |
| 227 TaskRunnerHelper::Get(TaskType::kUnspecedTimer, | 229 TaskRunnerHelper::Get(TaskType::kUnspecedTimer, |
| 228 &media_element.GetDocument()), | 230 &media_element.GetDocument()), |
| 229 this, | 231 this, |
| 230 &MediaControlsImpl::HideMediaControlsTimerFired), | 232 &MediaControlsImpl::HideMediaControlsTimerFired), |
| 231 hide_timer_behavior_flags_(kIgnoreNone), | 233 hide_timer_behavior_flags_(kIgnoreNone), |
| 232 is_mouse_over_controls_(false), | 234 is_mouse_over_controls_(false), |
| 233 is_paused_for_scrubbing_(false), | 235 is_paused_for_scrubbing_(false), |
| 234 resize_observer_(ResizeObserver::Create( | 236 resize_observer_(ResizeObserver::Create( |
| 235 media_element.GetDocument(), | 237 media_element.GetDocument(), |
| 236 new MediaControlsResizeObserverCallback(this))), | 238 new MediaControlsResizeObserverCallback(this))), |
| 237 element_size_changed_timer_( | 239 element_size_changed_timer_( |
| 238 TaskRunnerHelper::Get(TaskType::kUnspecedTimer, | 240 TaskRunnerHelper::Get(TaskType::kUnspecedTimer, |
| 239 &media_element.GetDocument()), | 241 &media_element.GetDocument()), |
| 240 this, | 242 this, |
| 241 &MediaControlsImpl::ElementSizeChangedTimerFired), | 243 &MediaControlsImpl::ElementSizeChangedTimerFired), |
| 242 keep_showing_until_timer_fires_(false) { | 244 keep_showing_until_timer_fires_(false) { |
| 243 resize_observer_->observe(&media_element); | 245 resize_observer_->observe(&media_element); |
| 244 } | 246 } |
| 245 | 247 |
| 246 MediaControlsImpl* MediaControlsImpl::Create(HTMLMediaElement& media_element, | 248 MediaControlsImpl* MediaControlsImpl::Create(HTMLMediaElement& media_element, |
| 247 ShadowRoot& shadow_root) { | 249 ShadowRoot& shadow_root) { |
| 248 MediaControlsImpl* controls = new MediaControlsImpl(media_element); | 250 MediaControlsImpl* controls = new MediaControlsImpl(media_element); |
| 249 controls->SetShadowPseudoId(AtomicString("-webkit-media-controls")); | 251 controls->SetShadowPseudoId(AtomicString("-webkit-media-controls")); |
| 250 controls->InitializeControls(); | 252 controls->InitializeControls(); |
| 251 controls->Reset(); | 253 controls->Reset(); |
| 252 | 254 |
| 253 // Initialize the orientation lock when going fullscreen feature. | 255 if (RuntimeEnabledFeatures::videoRotateToFullscreenEnabled() && |
| 254 if (RuntimeEnabledFeatures::videoFullscreenOrientationLockEnabled() && | |
| 255 media_element.IsHTMLVideoElement()) { | 256 media_element.IsHTMLVideoElement()) { |
| 257 // Initialize the rotate-to-fullscreen feature. | |
| 258 controls->rotate_to_fullscreen_delegate_ = | |
| 259 new MediaControlsRotateToFullscreenDelegate( | |
| 260 toHTMLVideoElement(media_element)); | |
| 261 } // TODO(johnme): Make it possible to use both features simultaneously. | |
|
mlamouri (slow - plz ping)
2017/04/19 17:10:45
Maybe say that they are not compatible now so if t
johnme
2017/04/19 18:21:28
Done.
| |
| 262 else if (RuntimeEnabledFeatures::videoFullscreenOrientationLockEnabled() && | |
| 263 media_element.IsHTMLVideoElement()) { | |
| 264 // Initialize the orientation lock when going fullscreen feature. | |
| 256 controls->orientation_lock_delegate_ = | 265 controls->orientation_lock_delegate_ = |
| 257 new MediaControlsOrientationLockDelegate( | 266 new MediaControlsOrientationLockDelegate( |
| 258 toHTMLVideoElement(media_element)); | 267 toHTMLVideoElement(media_element)); |
| 259 } | 268 } |
| 260 | 269 |
| 261 shadow_root.AppendChild(controls); | 270 shadow_root.AppendChild(controls); |
| 262 return controls; | 271 return controls; |
| 263 } | 272 } |
| 264 | 273 |
| 265 // The media controls DOM structure looks like: | 274 // The media controls DOM structure looks like: |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 403 return HTMLDivElement::InsertedInto(root); | 412 return HTMLDivElement::InsertedInto(root); |
| 404 | 413 |
| 405 // TODO(mlamouri): we should show the controls instead of having | 414 // TODO(mlamouri): we should show the controls instead of having |
| 406 // HTMLMediaElement do it. | 415 // HTMLMediaElement do it. |
| 407 | 416 |
| 408 // m_windowEventListener doesn't need to be re-attached as it's only needed | 417 // m_windowEventListener doesn't need to be re-attached as it's only needed |
| 409 // when a menu is visible. | 418 // when a menu is visible. |
| 410 media_event_listener_->Attach(); | 419 media_event_listener_->Attach(); |
| 411 if (orientation_lock_delegate_) | 420 if (orientation_lock_delegate_) |
| 412 orientation_lock_delegate_->Attach(); | 421 orientation_lock_delegate_->Attach(); |
| 422 if (rotate_to_fullscreen_delegate_) | |
| 423 rotate_to_fullscreen_delegate_->Attach(); | |
| 413 | 424 |
| 414 if (!resize_observer_) { | 425 if (!resize_observer_) { |
| 415 resize_observer_ = | 426 resize_observer_ = |
| 416 ResizeObserver::Create(MediaElement().GetDocument(), | 427 ResizeObserver::Create(MediaElement().GetDocument(), |
| 417 new MediaControlsResizeObserverCallback(this)); | 428 new MediaControlsResizeObserverCallback(this)); |
| 418 HTMLMediaElement& html_media_element = MediaElement(); | 429 HTMLMediaElement& html_media_element = MediaElement(); |
| 419 resize_observer_->observe(&html_media_element); | 430 resize_observer_->observe(&html_media_element); |
| 420 } | 431 } |
| 421 | 432 |
| 422 return HTMLDivElement::InsertedInto(root); | 433 return HTMLDivElement::InsertedInto(root); |
| 423 } | 434 } |
| 424 | 435 |
| 425 void MediaControlsImpl::RemovedFrom(ContainerNode*) { | 436 void MediaControlsImpl::RemovedFrom(ContainerNode*) { |
| 426 DCHECK(!MediaElement().isConnected()); | 437 DCHECK(!MediaElement().isConnected()); |
| 427 | 438 |
| 428 // TODO(mlamouri): we hide show the controls instead of having | 439 // TODO(mlamouri): we hide show the controls instead of having |
| 429 // HTMLMediaElement do it. | 440 // HTMLMediaElement do it. |
| 430 | 441 |
| 431 window_event_listener_->Stop(); | 442 window_event_listener_->Stop(); |
| 432 media_event_listener_->Detach(); | 443 media_event_listener_->Detach(); |
| 433 if (orientation_lock_delegate_) | 444 if (orientation_lock_delegate_) |
| 434 orientation_lock_delegate_->Detach(); | 445 orientation_lock_delegate_->Detach(); |
| 446 if (rotate_to_fullscreen_delegate_) | |
| 447 rotate_to_fullscreen_delegate_->Detach(); | |
| 435 | 448 |
| 436 resize_observer_.Clear(); | 449 resize_observer_.Clear(); |
| 437 } | 450 } |
| 438 | 451 |
| 439 void MediaControlsImpl::Reset() { | 452 void MediaControlsImpl::Reset() { |
| 440 EventDispatchForbiddenScope::AllowUserAgentEvents allow_events_in_shadow; | 453 EventDispatchForbiddenScope::AllowUserAgentEvents allow_events_in_shadow; |
| 441 BatchedControlUpdate batch(this); | 454 BatchedControlUpdate batch(this); |
| 442 | 455 |
| 443 const double duration = MediaElement().duration(); | 456 const double duration = MediaElement().duration(); |
| 444 duration_display_->setTextContent( | 457 duration_display_->setTextContent( |
| (...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1125 visitor->Trace(duration_display_); | 1138 visitor->Trace(duration_display_); |
| 1126 visitor->Trace(enclosure_); | 1139 visitor->Trace(enclosure_); |
| 1127 visitor->Trace(text_track_list_); | 1140 visitor->Trace(text_track_list_); |
| 1128 visitor->Trace(overflow_menu_); | 1141 visitor->Trace(overflow_menu_); |
| 1129 visitor->Trace(overflow_list_); | 1142 visitor->Trace(overflow_list_); |
| 1130 visitor->Trace(cast_button_); | 1143 visitor->Trace(cast_button_); |
| 1131 visitor->Trace(overlay_cast_button_); | 1144 visitor->Trace(overlay_cast_button_); |
| 1132 visitor->Trace(media_event_listener_); | 1145 visitor->Trace(media_event_listener_); |
| 1133 visitor->Trace(window_event_listener_); | 1146 visitor->Trace(window_event_listener_); |
| 1134 visitor->Trace(orientation_lock_delegate_); | 1147 visitor->Trace(orientation_lock_delegate_); |
| 1148 visitor->Trace(rotate_to_fullscreen_delegate_); | |
| 1135 MediaControls::Trace(visitor); | 1149 MediaControls::Trace(visitor); |
| 1136 HTMLDivElement::Trace(visitor); | 1150 HTMLDivElement::Trace(visitor); |
| 1137 } | 1151 } |
| 1138 | 1152 |
| 1139 } // namespace blink | 1153 } // namespace blink |
| OLD | NEW |