Changeset 48822 in webkit
- Timestamp:
- Sep 28, 2009 11:43:54 AM (15 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r48821 r48822 1 2009-09-28 Andrew Scherkus <scherkus@chromium.org> 2 3 Reviewed by Eric Carlson. 4 5 Delegate implementation of rendererIsNeeded() for media control elements to RenderTheme. 6 7 https://bugs.webkit.org/show_bug.cgi?id=28689 8 9 Covered by LayoutTests/media/video-no-audio.html 10 11 * rendering/MediaControlElements.cpp: Removed subclass implementations of rendererIsNeeded(). 12 (WebCore::MediaControlElement::rendererIsNeeded): Include calling shouldRenderMediaControlPart(). 13 (WebCore::MediaControlInputElement::rendererIsNeeded): Include calling shouldRenderMediaControlPart(). 14 * rendering/MediaControlElements.h: 15 * rendering/RenderTheme.cpp: 16 (WebCore::RenderTheme::shouldRenderMediaControlPart): New method. Contains logic moved from subclass implementations of rendererIsNeeded(). 17 * rendering/RenderTheme.h: 18 * rendering/RenderThemeChromiumSkia.cpp: 19 (WebCore::RenderThemeChromiumSkia::shouldRenderMediaControlPart): Override to always render mute button. 20 * rendering/RenderThemeChromiumSkia.h: 21 1 22 2009-09-28 Jian Li <jianli@chromium.org> 2 23 -
trunk/WebCore/rendering/MediaControlElements.cpp
r47774 r48822 136 136 bool MediaControlElement::rendererIsNeeded(RenderStyle* style) 137 137 { 138 return HTMLDivElement::rendererIsNeeded(style) && parent() && parent()->renderer(); 138 ASSERT(document()->page()); 139 140 return HTMLDivElement::rendererIsNeeded(style) && parent() && parent()->renderer() 141 && document()->page()->theme()->shouldRenderMediaControlPart(style->appearance(), m_mediaElement); 139 142 } 140 143 … … 361 364 bool MediaControlInputElement::rendererIsNeeded(RenderStyle* style) 362 365 { 363 return HTMLInputElement::rendererIsNeeded(style) && parent() && parent()->renderer(); 366 ASSERT(document()->page()); 367 368 return HTMLInputElement::rendererIsNeeded(style) && parent() && parent()->renderer() 369 && document()->page()->theme()->shouldRenderMediaControlPart(style->appearance(), m_mediaElement); 364 370 } 365 371 … … 443 449 { 444 450 setDisplayType(m_mediaElement->muted() ? MediaUnMuteButton : MediaMuteButton); 445 }446 447 bool MediaControlMuteButtonElement::disabled() const448 {449 return !m_mediaElement->hasAudio();450 }451 452 bool MediaControlMuteButtonElement::rendererIsNeeded(RenderStyle* style)453 {454 return MediaControlInputElement::rendererIsNeeded(style) && !disabled();455 451 } 456 452 … … 552 548 } 553 549 554 bool MediaControlRewindButtonElement::rendererIsNeeded(RenderStyle* style)555 {556 return MediaControlInputElement::rendererIsNeeded(style) && m_mediaElement->movieLoadType() != MediaPlayer::LiveStream;557 }558 559 550 560 551 // ---------------------------- … … 574 565 } 575 566 576 bool MediaControlReturnToRealtimeButtonElement::rendererIsNeeded(RenderStyle* style)577 {578 return MediaControlInputElement::rendererIsNeeded(style) && m_mediaElement->movieLoadType() == MediaPlayer::LiveStream;579 }580 567 581 568 // ---------------------------- … … 663 650 } 664 651 HTMLInputElement::defaultEventHandler(event); 665 }666 667 bool MediaControlFullscreenButtonElement::rendererIsNeeded(RenderStyle* style)668 {669 return MediaControlInputElement::rendererIsNeeded(style) && m_mediaElement->supportsFullscreen();670 652 } 671 653 -
trunk/WebCore/rendering/MediaControlElements.h
r47763 r48822 156 156 MediaControlElementType displayType() const { return m_displayType; } 157 157 158 // Some elements are disabled by movie state (eg. mute if no audio).159 virtual bool disabled() const { return false; }160 161 158 HTMLMediaElement* mediaElement() const { return m_mediaElement; } 162 159 virtual bool isMediaControlElement() const { return true; } … … 178 175 virtual void defaultEventHandler(Event*); 179 176 virtual void updateDisplayType(); 180 virtual bool disabled() const;181 virtual bool rendererIsNeeded(RenderStyle*);182 177 }; 183 178 … … 213 208 MediaControlRewindButtonElement(Document*, HTMLMediaElement*); 214 209 virtual void defaultEventHandler(Event*); 215 virtual bool rendererIsNeeded(RenderStyle*);216 210 }; 217 211 … … 222 216 MediaControlReturnToRealtimeButtonElement(Document*, HTMLMediaElement*); 223 217 virtual void defaultEventHandler(Event*); 224 virtual bool rendererIsNeeded(RenderStyle*);225 218 }; 226 219 … … 248 241 MediaControlFullscreenButtonElement(Document*, HTMLMediaElement*); 249 242 virtual void defaultEventHandler(Event*); 250 virtual bool rendererIsNeeded(RenderStyle*);251 243 }; 252 244 -
trunk/WebCore/rendering/RenderTheme.cpp
r47744 r48822 31 31 #include "HTMLInputElement.h" 32 32 #include "HTMLNames.h" 33 #include "MediaControlElements.h" 33 34 #include "Page.h" 34 35 #include "RenderStyle.h" … … 397 398 return toRenderBox(o)->borderBoxRect().contains(roundedIntPoint(localPoint)); 398 399 } 400 401 bool RenderTheme::shouldRenderMediaControlPart(ControlPart part, Element* e) 402 { 403 HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(e); 404 switch (part) { 405 case MediaMuteButtonPart: 406 return mediaElement->hasAudio(); 407 case MediaRewindButtonPart: 408 return mediaElement->movieLoadType() != MediaPlayer::LiveStream; 409 case MediaReturnToRealtimeButtonPart: 410 return mediaElement->movieLoadType() == MediaPlayer::LiveStream; 411 case MediaFullscreenButtonPart: 412 return mediaElement->supportsFullscreen(); 413 default: 414 return true; 415 } 416 } 399 417 #endif 400 418 -
trunk/WebCore/rendering/RenderTheme.h
r47744 r48822 173 173 // Media controls 174 174 virtual bool hitTestMediaControlPart(RenderObject*, const IntPoint& absPoint); 175 virtual bool shouldRenderMediaControlPart(ControlPart, Element*); 175 176 #endif 176 177 -
trunk/WebCore/rendering/RenderThemeChromiumSkia.cpp
r48499 r48822 869 869 } 870 870 871 #if ENABLE(VIDEO) 872 bool RenderThemeChromiumSkia::shouldRenderMediaControlPart(ControlPart part, Element* e) 873 { 874 HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(e); 875 switch (part) { 876 case MediaMuteButtonPart: 877 return true; 878 default: 879 return RenderTheme::shouldRenderMediaControlPart(part, e); 880 } 881 } 882 #endif 883 871 884 // static 872 885 void RenderThemeChromiumSkia::setDefaultFontSize(int fontSize) -
trunk/WebCore/rendering/RenderThemeChromiumSkia.h
r48045 r48822 127 127 virtual int buttonInternalPaddingBottom() const; 128 128 129 #if ENABLE(VIDEO) 130 // Media controls 131 virtual bool shouldRenderMediaControlPart(ControlPart, Element*); 132 #endif 133 129 134 // Provide a way to pass the default font size from the Settings object 130 135 // to the render theme. FIXME: http://b/1129186 A cleaner way would be
Note: See TracChangeset
for help on using the changeset viewer.