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

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: ...because i compiled release. 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 // It is unclear if this can be converted to isUserInteractionEvent(), since
71 // mouse* events seem to be eaten during a drag anyway. crbug.com/516416 .
72 if (isUserInteractionEvent(event))
73 return true;
74
75 // Some events are only captured during a slider drag.
76 LayoutSlider* slider = toLayoutSlider(layoutObject);
77 if (slider && !slider->inDragMode())
78 return false;
79
70 const AtomicString& type = event->type(); 80 const AtomicString& type = event->type();
71 return type == EventTypeNames::mousedown 81 return type == EventTypeNames::mouseover
72 || type == EventTypeNames::mouseup
73 || type == EventTypeNames::click
74 || type == EventTypeNames::dblclick
75 || type == EventTypeNames::mouseover
76 || type == EventTypeNames::mouseout 82 || type == EventTypeNames::mouseout
77 || type == EventTypeNames::mousemove 83 || type == EventTypeNames::mousemove;
78 || event->isKeyboardEvent()
79 || event->isTouchEvent();
80 } 84 }
81 85
82 86
83 MediaControlPanelElement::MediaControlPanelElement(MediaControls& mediaControls) 87 MediaControlPanelElement::MediaControlPanelElement(MediaControls& mediaControls)
84 : MediaControlDivElement(mediaControls, MediaControlsPanel) 88 : MediaControlDivElement(mediaControls, MediaControlsPanel)
85 , m_isDisplayed(false) 89 , m_isDisplayed(false)
86 , m_opaque(true) 90 , m_opaque(true)
87 , m_transitionTimer(this, &MediaControlPanelElement::transitionTimerFired) 91 , m_transitionTimer(this, &MediaControlPanelElement::transitionTimerFired)
88 { 92 {
89 } 93 }
(...skipping 29 matching lines...) Expand all
119 123
120 void MediaControlPanelElement::stopTimer() 124 void MediaControlPanelElement::stopTimer()
121 { 125 {
122 if (m_transitionTimer.isActive()) 126 if (m_transitionTimer.isActive())
123 m_transitionTimer.stop(); 127 m_transitionTimer.stop();
124 } 128 }
125 129
126 void MediaControlPanelElement::transitionTimerFired(Timer<MediaControlPanelEleme nt>*) 130 void MediaControlPanelElement::transitionTimerFired(Timer<MediaControlPanelEleme nt>*)
127 { 131 {
128 if (!m_opaque) 132 if (!m_opaque)
129 hide(); 133 setIsWanted(false);
130 134
131 stopTimer(); 135 stopTimer();
132 } 136 }
133 137
134 void MediaControlPanelElement::didBecomeVisible() 138 void MediaControlPanelElement::didBecomeVisible()
135 { 139 {
136 ASSERT(m_isDisplayed && m_opaque); 140 ASSERT(m_isDisplayed && m_opaque);
137 mediaElement().mediaControlsDidBecomeVisible(); 141 mediaElement().mediaControlsDidBecomeVisible();
138 } 142 }
139 143
140 void MediaControlPanelElement::makeOpaque() 144 void MediaControlPanelElement::makeOpaque()
141 { 145 {
142 if (m_opaque) 146 if (m_opaque)
143 return; 147 return;
144 148
145 setInlineStyleProperty(CSSPropertyOpacity, 1.0, CSSPrimitiveValue::UnitType: :Number); 149 setInlineStyleProperty(CSSPropertyOpacity, 1.0, CSSPrimitiveValue::UnitType: :Number);
146 m_opaque = true; 150 m_opaque = true;
147 151
148 if (m_isDisplayed) { 152 if (m_isDisplayed) {
149 show(); 153 setIsWanted(true);
150 didBecomeVisible(); 154 didBecomeVisible();
151 } 155 }
152 } 156 }
153 157
154 void MediaControlPanelElement::makeTransparent() 158 void MediaControlPanelElement::makeTransparent()
155 { 159 {
156 if (!m_opaque) 160 if (!m_opaque)
157 return; 161 return;
158 162
159 setInlineStyleProperty(CSSPropertyOpacity, 0.0, CSSPrimitiveValue::UnitType: :Number); 163 setInlineStyleProperty(CSSPropertyOpacity, 0.0, CSSPrimitiveValue::UnitType: :Number);
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 { 305 {
302 if (event->type() == EventTypeNames::click && mediaElement().togglePlayState WillPlay()) { 306 if (event->type() == EventTypeNames::click && mediaElement().togglePlayState WillPlay()) {
303 mediaElement().togglePlayState(); 307 mediaElement().togglePlayState();
304 updateDisplayType(); 308 updateDisplayType();
305 event->setDefaultHandled(); 309 event->setDefaultHandled();
306 } 310 }
307 } 311 }
308 312
309 void MediaControlOverlayPlayButtonElement::updateDisplayType() 313 void MediaControlOverlayPlayButtonElement::updateDisplayType()
310 { 314 {
311 if (mediaElement().shouldShowControls() && mediaElement().togglePlayStateWil lPlay()) 315 setIsWanted(mediaElement().shouldShowControls() && mediaElement().togglePlay StateWillPlay());
312 show();
313 else
314 hide();
315 } 316 }
316 317
317 bool MediaControlOverlayPlayButtonElement::keepEventInNode(Event* event) 318 bool MediaControlOverlayPlayButtonElement::keepEventInNode(Event* event)
318 { 319 {
319 return isUserInteractionEvent(event); 320 return isUserInteractionEvent(event);
320 } 321 }
321 322
322 323
323 // ---------------------------- 324 // ----------------------------
324 325
325 MediaControlToggleClosedCaptionsButtonElement::MediaControlToggleClosedCaptionsB uttonElement(MediaControls& mediaControls) 326 MediaControlToggleClosedCaptionsButtonElement::MediaControlToggleClosedCaptionsB uttonElement(MediaControls& mediaControls)
326 : MediaControlInputElement(mediaControls, MediaShowClosedCaptionsButton) 327 : MediaControlInputElement(mediaControls, MediaShowClosedCaptionsButton)
327 { 328 {
328 } 329 }
329 330
330 PassRefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> MediaContr olToggleClosedCaptionsButtonElement::create(MediaControls& mediaControls) 331 PassRefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> MediaContr olToggleClosedCaptionsButtonElement::create(MediaControls& mediaControls)
331 { 332 {
332 RefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> button = a doptRefWillBeNoop(new MediaControlToggleClosedCaptionsButtonElement(mediaControl s)); 333 RefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> button = a doptRefWillBeNoop(new MediaControlToggleClosedCaptionsButtonElement(mediaControl s));
333 button->ensureUserAgentShadowRoot(); 334 button->ensureUserAgentShadowRoot();
334 button->setType(InputTypeNames::button); 335 button->setType(InputTypeNames::button);
335 button->setShadowPseudoId(AtomicString("-webkit-media-controls-toggle-closed -captions-button", AtomicString::ConstructFromLiteral)); 336 button->setShadowPseudoId(AtomicString("-webkit-media-controls-toggle-closed -captions-button", AtomicString::ConstructFromLiteral));
336 button->hide(); 337 button->setIsWanted(false);
337 return button.release(); 338 return button.release();
338 } 339 }
339 340
340 void MediaControlToggleClosedCaptionsButtonElement::updateDisplayType() 341 void MediaControlToggleClosedCaptionsButtonElement::updateDisplayType()
341 { 342 {
342 bool captionsVisible = mediaElement().closedCaptionsVisible(); 343 bool captionsVisible = mediaElement().closedCaptionsVisible();
343 setDisplayType(captionsVisible ? MediaHideClosedCaptionsButton : MediaShowCl osedCaptionsButton); 344 setDisplayType(captionsVisible ? MediaHideClosedCaptionsButton : MediaShowCl osedCaptionsButton);
344 setChecked(captionsVisible); 345 setChecked(captionsVisible);
345 } 346 }
346 347
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 void MediaControlTimelineElement::setDuration(double duration) 426 void MediaControlTimelineElement::setDuration(double duration)
426 { 427 {
427 setFloatingPointAttribute(maxAttr, std::isfinite(duration) ? duration : 0); 428 setFloatingPointAttribute(maxAttr, std::isfinite(duration) ? duration : 0);
428 429
429 if (LayoutObject* layoutObject = this->layoutObject()) 430 if (LayoutObject* layoutObject = this->layoutObject())
430 layoutObject->setShouldDoFullPaintInvalidation(); 431 layoutObject->setShouldDoFullPaintInvalidation();
431 } 432 }
432 433
433 bool MediaControlTimelineElement::keepEventInNode(Event* event) 434 bool MediaControlTimelineElement::keepEventInNode(Event* event)
434 { 435 {
435 return isUserInteractionEventForSlider(event); 436 return isUserInteractionEventForSlider(event, layoutObject());
436 } 437 }
437 438
438 // ---------------------------- 439 // ----------------------------
439 440
440 MediaControlVolumeSliderElement::MediaControlVolumeSliderElement(MediaControls& mediaControls) 441 MediaControlVolumeSliderElement::MediaControlVolumeSliderElement(MediaControls& mediaControls)
441 : MediaControlInputElement(mediaControls, MediaVolumeSlider) 442 : MediaControlInputElement(mediaControls, MediaVolumeSlider)
442 { 443 {
443 } 444 }
444 445
445 PassRefPtrWillBeRawPtr<MediaControlVolumeSliderElement> MediaControlVolumeSlider Element::create(MediaControls& mediaControls) 446 PassRefPtrWillBeRawPtr<MediaControlVolumeSliderElement> MediaControlVolumeSlider Element::create(MediaControls& mediaControls)
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 } 489 }
489 490
490 void MediaControlVolumeSliderElement::setVolume(double volume) 491 void MediaControlVolumeSliderElement::setVolume(double volume)
491 { 492 {
492 if (value().toDouble() != volume) 493 if (value().toDouble() != volume)
493 setValue(String::number(volume)); 494 setValue(String::number(volume));
494 } 495 }
495 496
496 bool MediaControlVolumeSliderElement::keepEventInNode(Event* event) 497 bool MediaControlVolumeSliderElement::keepEventInNode(Event* event)
497 { 498 {
498 return isUserInteractionEventForSlider(event); 499 return isUserInteractionEventForSlider(event, layoutObject());
499 } 500 }
500 501
501 // ---------------------------- 502 // ----------------------------
502 503
503 MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement(MediaCo ntrols& mediaControls) 504 MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement(MediaCo ntrols& mediaControls)
504 : MediaControlInputElement(mediaControls, MediaEnterFullscreenButton) 505 : MediaControlInputElement(mediaControls, MediaEnterFullscreenButton)
505 { 506 {
506 } 507 }
507 508
508 PassRefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> MediaControlFullscre enButtonElement::create(MediaControls& mediaControls) 509 PassRefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> MediaControlFullscre enButtonElement::create(MediaControls& mediaControls)
509 { 510 {
510 RefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> button = adoptRefWil lBeNoop(new MediaControlFullscreenButtonElement(mediaControls)); 511 RefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> button = adoptRefWil lBeNoop(new MediaControlFullscreenButtonElement(mediaControls));
511 button->ensureUserAgentShadowRoot(); 512 button->ensureUserAgentShadowRoot();
512 button->setType(InputTypeNames::button); 513 button->setType(InputTypeNames::button);
513 button->setShadowPseudoId(AtomicString("-webkit-media-controls-fullscreen-bu tton", AtomicString::ConstructFromLiteral)); 514 button->setShadowPseudoId(AtomicString("-webkit-media-controls-fullscreen-bu tton", AtomicString::ConstructFromLiteral));
514 button->hide(); 515 button->setIsWanted(false);
515 return button.release(); 516 return button.release();
516 } 517 }
517 518
518 void MediaControlFullscreenButtonElement::defaultEventHandler(Event* event) 519 void MediaControlFullscreenButtonElement::defaultEventHandler(Event* event)
519 { 520 {
520 if (event->type() == EventTypeNames::click) { 521 if (event->type() == EventTypeNames::click) {
521 if (mediaElement().isFullscreen()) 522 if (mediaElement().isFullscreen())
522 mediaElement().exitFullscreen(); 523 mediaElement().exitFullscreen();
523 else 524 else
524 mediaElement().enterFullscreen(); 525 mediaElement().enterFullscreen();
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 } 612 }
612 613
613 PassRefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> MediaControlCurren tTimeDisplayElement::create(MediaControls& mediaControls) 614 PassRefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> MediaControlCurren tTimeDisplayElement::create(MediaControls& mediaControls)
614 { 615 {
615 RefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> element = adoptRef WillBeNoop(new MediaControlCurrentTimeDisplayElement(mediaControls)); 616 RefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> element = adoptRef WillBeNoop(new MediaControlCurrentTimeDisplayElement(mediaControls));
616 element->setShadowPseudoId(AtomicString("-webkit-media-controls-current-time -display", AtomicString::ConstructFromLiteral)); 617 element->setShadowPseudoId(AtomicString("-webkit-media-controls-current-time -display", AtomicString::ConstructFromLiteral));
617 return element.release(); 618 return element.release();
618 } 619 }
619 620
620 } // namespace blink 621 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698