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

Side by Side Diff: Source/core/html/shadow/MediaControlElements.cpp

Issue 1156993013: New media playback UI. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: actually got the other CL number right... Created 5 years, 4 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 /* 1 /*
2 * Copyright (C) 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
3 * Copyright (C) 2012 Google Inc. All rights reserved. 3 * Copyright (C) 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 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 const AtomicString& type = event->type(); 58 const AtomicString& type = event->type();
59 return type == EventTypeNames::mousedown 59 return type == EventTypeNames::mousedown
60 || type == EventTypeNames::mouseup 60 || type == EventTypeNames::mouseup
61 || type == EventTypeNames::click 61 || type == EventTypeNames::click
62 || type == EventTypeNames::dblclick 62 || type == EventTypeNames::dblclick
63 || event->isKeyboardEvent() 63 || event->isKeyboardEvent()
64 || event->isTouchEvent(); 64 || event->isTouchEvent();
65 } 65 }
66 66
67 // Sliders (the volume control and timeline) need to capture some additional eve nts used when dragging the thumb. 67 // Sliders (the volume control and timeline) need to capture some additional eve nts used when dragging the thumb.
68 static bool isUserInteractionEventForSlider(Event* event) 68 static bool isUserInteractionEventForSlider(Event* event, LayoutObject* layoutOb ject)
69 { 69 {
70 if (isUserInteractionEvent(event))
71 return true;
72
73 // Some events are only captured during a slider drag.
74 LayoutSlider* slider = toLayoutSlider(layoutObject);
75 if (slider && !slider->inDragMode())
76 return false;
77
70 const AtomicString& type = event->type(); 78 const AtomicString& type = event->type();
71 return type == EventTypeNames::mousedown 79 return type == EventTypeNames::mouseover
72 || type == EventTypeNames::mouseup
73 || type == EventTypeNames::click
74 || type == EventTypeNames::dblclick
75 || type == EventTypeNames::mouseover
76 || type == EventTypeNames::mouseout 80 || type == EventTypeNames::mouseout
77 || type == EventTypeNames::mousemove 81 || type == EventTypeNames::mousemove;
78 || event->isKeyboardEvent()
79 || event->isTouchEvent();
80 } 82 }
81 83
82 84
83 MediaControlPanelElement::MediaControlPanelElement(MediaControls& mediaControls) 85 MediaControlPanelElement::MediaControlPanelElement(MediaControls& mediaControls)
84 : MediaControlDivElement(mediaControls, MediaControlsPanel) 86 : MediaControlDivElement(mediaControls, MediaControlsPanel)
85 , m_isDisplayed(false) 87 , m_isDisplayed(false)
86 , m_opaque(true) 88 , m_opaque(true)
87 , m_transitionTimer(this, &MediaControlPanelElement::transitionTimerFired) 89 , m_transitionTimer(this, &MediaControlPanelElement::transitionTimerFired)
88 { 90 {
89 } 91 }
(...skipping 29 matching lines...) Expand all
119 121
120 void MediaControlPanelElement::stopTimer() 122 void MediaControlPanelElement::stopTimer()
121 { 123 {
122 if (m_transitionTimer.isActive()) 124 if (m_transitionTimer.isActive())
123 m_transitionTimer.stop(); 125 m_transitionTimer.stop();
124 } 126 }
125 127
126 void MediaControlPanelElement::transitionTimerFired(Timer<MediaControlPanelEleme nt>*) 128 void MediaControlPanelElement::transitionTimerFired(Timer<MediaControlPanelEleme nt>*)
127 { 129 {
128 if (!m_opaque) 130 if (!m_opaque)
129 hide(); 131 setIsWanted(false);
130 132
131 stopTimer(); 133 stopTimer();
132 } 134 }
133 135
134 void MediaControlPanelElement::didBecomeVisible() 136 void MediaControlPanelElement::didBecomeVisible()
135 { 137 {
136 ASSERT(m_isDisplayed && m_opaque); 138 ASSERT(m_isDisplayed && m_opaque);
137 mediaElement().mediaControlsDidBecomeVisible(); 139 mediaElement().mediaControlsDidBecomeVisible();
138 } 140 }
139 141
140 void MediaControlPanelElement::makeOpaque() 142 void MediaControlPanelElement::makeOpaque()
141 { 143 {
142 if (m_opaque) 144 if (m_opaque)
143 return; 145 return;
144 146
145 setInlineStyleProperty(CSSPropertyOpacity, 1.0, CSSPrimitiveValue::UnitType: :Number); 147 setInlineStyleProperty(CSSPropertyOpacity, 1.0, CSSPrimitiveValue::UnitType: :Number);
146 m_opaque = true; 148 m_opaque = true;
147 149
148 if (m_isDisplayed) { 150 if (m_isDisplayed) {
149 show(); 151 setIsWanted(true);
150 didBecomeVisible(); 152 didBecomeVisible();
151 } 153 }
152 } 154 }
153 155
154 void MediaControlPanelElement::makeTransparent() 156 void MediaControlPanelElement::makeTransparent()
155 { 157 {
156 if (!m_opaque) 158 if (!m_opaque)
157 return; 159 return;
158 160
159 setInlineStyleProperty(CSSPropertyOpacity, 0.0, CSSPrimitiveValue::UnitType: :Number); 161 setInlineStyleProperty(CSSPropertyOpacity, 0.0, CSSPrimitiveValue::UnitType: :Number);
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 { 303 {
302 if (event->type() == EventTypeNames::click && mediaElement().togglePlayState WillPlay()) { 304 if (event->type() == EventTypeNames::click && mediaElement().togglePlayState WillPlay()) {
303 mediaElement().togglePlayState(); 305 mediaElement().togglePlayState();
304 updateDisplayType(); 306 updateDisplayType();
305 event->setDefaultHandled(); 307 event->setDefaultHandled();
306 } 308 }
307 } 309 }
308 310
309 void MediaControlOverlayPlayButtonElement::updateDisplayType() 311 void MediaControlOverlayPlayButtonElement::updateDisplayType()
310 { 312 {
311 if (mediaElement().shouldShowControls() && mediaElement().togglePlayStateWil lPlay()) 313 setIsWanted(mediaElement().shouldShowControls() && mediaElement().togglePlay StateWillPlay());
312 show();
313 else
314 hide();
315 } 314 }
316 315
317 bool MediaControlOverlayPlayButtonElement::keepEventInNode(Event* event) 316 bool MediaControlOverlayPlayButtonElement::keepEventInNode(Event* event)
318 { 317 {
319 return isUserInteractionEvent(event); 318 return isUserInteractionEvent(event);
320 } 319 }
321 320
322 321
323 // ---------------------------- 322 // ----------------------------
324 323
325 MediaControlToggleClosedCaptionsButtonElement::MediaControlToggleClosedCaptionsB uttonElement(MediaControls& mediaControls) 324 MediaControlToggleClosedCaptionsButtonElement::MediaControlToggleClosedCaptionsB uttonElement(MediaControls& mediaControls)
326 : MediaControlInputElement(mediaControls, MediaShowClosedCaptionsButton) 325 : MediaControlInputElement(mediaControls, MediaShowClosedCaptionsButton)
327 { 326 {
328 } 327 }
329 328
330 PassRefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> MediaContr olToggleClosedCaptionsButtonElement::create(MediaControls& mediaControls) 329 PassRefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> MediaContr olToggleClosedCaptionsButtonElement::create(MediaControls& mediaControls)
331 { 330 {
332 RefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> button = a doptRefWillBeNoop(new MediaControlToggleClosedCaptionsButtonElement(mediaControl s)); 331 RefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> button = a doptRefWillBeNoop(new MediaControlToggleClosedCaptionsButtonElement(mediaControl s));
333 button->ensureUserAgentShadowRoot(); 332 button->ensureUserAgentShadowRoot();
334 button->setType(InputTypeNames::button); 333 button->setType(InputTypeNames::button);
335 button->setShadowPseudoId(AtomicString("-webkit-media-controls-toggle-closed -captions-button", AtomicString::ConstructFromLiteral)); 334 button->setShadowPseudoId(AtomicString("-webkit-media-controls-toggle-closed -captions-button", AtomicString::ConstructFromLiteral));
336 button->hide(); 335 button->setIsWanted(false);
337 return button.release(); 336 return button.release();
338 } 337 }
339 338
340 void MediaControlToggleClosedCaptionsButtonElement::updateDisplayType() 339 void MediaControlToggleClosedCaptionsButtonElement::updateDisplayType()
341 { 340 {
342 bool captionsVisible = mediaElement().closedCaptionsVisible(); 341 bool captionsVisible = mediaElement().closedCaptionsVisible();
343 setDisplayType(captionsVisible ? MediaHideClosedCaptionsButton : MediaShowCl osedCaptionsButton); 342 setDisplayType(captionsVisible ? MediaHideClosedCaptionsButton : MediaShowCl osedCaptionsButton);
344 setChecked(captionsVisible); 343 setChecked(captionsVisible);
345 } 344 }
346 345
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 void MediaControlTimelineElement::setDuration(double duration) 424 void MediaControlTimelineElement::setDuration(double duration)
426 { 425 {
427 setFloatingPointAttribute(maxAttr, std::isfinite(duration) ? duration : 0); 426 setFloatingPointAttribute(maxAttr, std::isfinite(duration) ? duration : 0);
428 427
429 if (LayoutObject* layoutObject = this->layoutObject()) 428 if (LayoutObject* layoutObject = this->layoutObject())
430 layoutObject->setShouldDoFullPaintInvalidation(); 429 layoutObject->setShouldDoFullPaintInvalidation();
431 } 430 }
432 431
433 bool MediaControlTimelineElement::keepEventInNode(Event* event) 432 bool MediaControlTimelineElement::keepEventInNode(Event* event)
434 { 433 {
435 return isUserInteractionEventForSlider(event); 434 return isUserInteractionEventForSlider(event, layoutObject());
436 } 435 }
437 436
438 // ---------------------------- 437 // ----------------------------
439 438
440 MediaControlVolumeSliderElement::MediaControlVolumeSliderElement(MediaControls& mediaControls) 439 MediaControlVolumeSliderElement::MediaControlVolumeSliderElement(MediaControls& mediaControls)
441 : MediaControlInputElement(mediaControls, MediaVolumeSlider) 440 : MediaControlInputElement(mediaControls, MediaVolumeSlider)
442 { 441 {
443 } 442 }
444 443
445 PassRefPtrWillBeRawPtr<MediaControlVolumeSliderElement> MediaControlVolumeSlider Element::create(MediaControls& mediaControls) 444 PassRefPtrWillBeRawPtr<MediaControlVolumeSliderElement> MediaControlVolumeSlider Element::create(MediaControls& mediaControls)
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 } 487 }
489 488
490 void MediaControlVolumeSliderElement::setVolume(double volume) 489 void MediaControlVolumeSliderElement::setVolume(double volume)
491 { 490 {
492 if (value().toDouble() != volume) 491 if (value().toDouble() != volume)
493 setValue(String::number(volume)); 492 setValue(String::number(volume));
494 } 493 }
495 494
496 bool MediaControlVolumeSliderElement::keepEventInNode(Event* event) 495 bool MediaControlVolumeSliderElement::keepEventInNode(Event* event)
497 { 496 {
498 return isUserInteractionEventForSlider(event); 497 return isUserInteractionEventForSlider(event, layoutObject());
499 } 498 }
500 499
501 // ---------------------------- 500 // ----------------------------
502 501
503 MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement(MediaCo ntrols& mediaControls) 502 MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement(MediaCo ntrols& mediaControls)
504 : MediaControlInputElement(mediaControls, MediaEnterFullscreenButton) 503 : MediaControlInputElement(mediaControls, MediaEnterFullscreenButton)
505 { 504 {
506 } 505 }
507 506
508 PassRefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> MediaControlFullscre enButtonElement::create(MediaControls& mediaControls) 507 PassRefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> MediaControlFullscre enButtonElement::create(MediaControls& mediaControls)
509 { 508 {
510 RefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> button = adoptRefWil lBeNoop(new MediaControlFullscreenButtonElement(mediaControls)); 509 RefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> button = adoptRefWil lBeNoop(new MediaControlFullscreenButtonElement(mediaControls));
511 button->ensureUserAgentShadowRoot(); 510 button->ensureUserAgentShadowRoot();
512 button->setType(InputTypeNames::button); 511 button->setType(InputTypeNames::button);
513 button->setShadowPseudoId(AtomicString("-webkit-media-controls-fullscreen-bu tton", AtomicString::ConstructFromLiteral)); 512 button->setShadowPseudoId(AtomicString("-webkit-media-controls-fullscreen-bu tton", AtomicString::ConstructFromLiteral));
514 button->hide(); 513 button->setIsWanted(false);
515 return button.release(); 514 return button.release();
516 } 515 }
517 516
518 void MediaControlFullscreenButtonElement::defaultEventHandler(Event* event) 517 void MediaControlFullscreenButtonElement::defaultEventHandler(Event* event)
519 { 518 {
520 if (event->type() == EventTypeNames::click) { 519 if (event->type() == EventTypeNames::click) {
521 if (mediaElement().isFullscreen()) 520 if (mediaElement().isFullscreen())
522 mediaElement().exitFullscreen(); 521 mediaElement().exitFullscreen();
523 else 522 else
524 mediaElement().enterFullscreen(); 523 mediaElement().enterFullscreen();
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 } 610 }
612 611
613 PassRefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> MediaControlCurren tTimeDisplayElement::create(MediaControls& mediaControls) 612 PassRefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> MediaControlCurren tTimeDisplayElement::create(MediaControls& mediaControls)
614 { 613 {
615 RefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> element = adoptRef WillBeNoop(new MediaControlCurrentTimeDisplayElement(mediaControls)); 614 RefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> element = adoptRef WillBeNoop(new MediaControlCurrentTimeDisplayElement(mediaControls));
616 element->setShadowPseudoId(AtomicString("-webkit-media-controls-current-time -display", AtomicString::ConstructFromLiteral)); 615 element->setShadowPseudoId(AtomicString("-webkit-media-controls-current-time -display", AtomicString::ConstructFromLiteral));
617 return element.release(); 616 return element.release();
618 } 617 }
619 618
620 } // namespace blink 619 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698