Changeset 44738 in webkit


Ignore:
Timestamp:
Jun 16, 2009 2:08:19 PM (15 years ago)
Author:
eric.carlson@apple.com
Message:

2009-06-16 Eric Carlson <eric.carlson@apple.com>

Reviewed by Simon Fraser.

Fix for <rdar://problem/6890126> Theme code should fetch the MediaControlElementType from
the MediaControlInputElement, rather than computing it again

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::percentLoaded): New, utility function for controller implementation.
  • html/HTMLMediaElement.h:
  • rendering/MediaControlElements.h: (WebCore::MediaControlInputElement::displayType): New, return m_displayType.
  • rendering/RenderMediaControls.cpp: (WebCore::RenderMediaControls::paintMediaControlsPart): Stop using MediaPlayer object, get button state from the button itself and get movie state from HTMLMediaElement.
  • rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::paintMediaMuteButton): Get state from button instead of MediaPlayer. (WebCore::RenderThemeMac::paintMediaPlayButton): Ditto.
Location:
trunk/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r44737 r44738  
     12009-06-16  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Reviewed by Simon Fraser.
     4
     5        Fix for <rdar://problem/6890126> Theme code should fetch the MediaControlElementType from
     6        the MediaControlInputElement, rather than computing it again
     7
     8        * html/HTMLMediaElement.cpp:
     9        (WebCore::HTMLMediaElement::percentLoaded): New, utility function for controller implementation.
     10        * html/HTMLMediaElement.h:
     11
     12        * rendering/MediaControlElements.h:
     13        (WebCore::MediaControlInputElement::displayType): New, return m_displayType.
     14
     15        * rendering/RenderMediaControls.cpp:
     16        (WebCore::RenderMediaControls::paintMediaControlsPart): Stop using MediaPlayer object, get button
     17        state from the button itself and get movie state from HTMLMediaElement.
     18
     19        * rendering/RenderThemeMac.mm:
     20        (WebCore::RenderThemeMac::paintMediaMuteButton): Get state from button instead of MediaPlayer.
     21        (WebCore::RenderThemeMac::paintMediaPlayButton): Ditto.
     22
    1232009-06-16  Jian Li  <jianli@chromium.org>
    224
  • trunk/WebCore/html/HTMLMediaElement.cpp

    r44415 r44738  
    11311131}
    11321132
     1133float HTMLMediaElement::percentLoaded() const
     1134{
     1135    if (!m_player)
     1136        return 0;
     1137    float duration = m_player->duration();
     1138    return duration ? m_player->maxTimeBuffered() / duration : 0;
     1139}
     1140
    11331141bool HTMLMediaElement::havePotentialSourceChild()
    11341142{
  • trunk/WebCore/html/HTMLMediaElement.h

    r43715 r44738  
    132132    bool canPlay() const;
    133133
     134    float percentLoaded() const;
     135
    134136#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
    135137    void setNeedWidgetUpdate(bool needWidgetUpdate) { m_needWidgetUpdate = needWidgetUpdate; }
  • trunk/WebCore/rendering/MediaControlElements.h

    r43747 r44738  
    9494    void updateStyle();
    9595    bool hitTest(const IntPoint& absPoint);
     96    MediaControlElementType displayType() const { return m_displayType; }
    9697
    9798protected:
  • trunk/WebCore/rendering/RenderMediaControls.cpp

    r44432 r44738  
    102102        case MediaMuteButton:
    103103        case MediaUnMuteButton:
    104             if (HTMLMediaElement* mediaElement = parentMediaElement(o))
    105                 paintThemePart(mediaElement->muted() ? SafariTheme::MediaUnMuteButtonPart : SafariTheme::MediaMuteButtonPart, paintInfo.context->platformContext(), r, NSRegularControlSize, determineState(o));
     104            if (MediaControlMuteButtonElement* btn = static_cast<MediaControlMuteButtonElement*>(o->node())) {
     105                bool audioEnabled = btn->displayType() == MediaMuteButton;
     106                paintThemePart(audioEnabled ? SafariTheme::MediaMuteButtonPart : SafariTheme::MediaUnMuteButtonPart, paintInfo.context->platformContext(), r, NSRegularControlSize, determineState(o));
     107            }
    106108            break;
    107109        case MediaPauseButton:
    108110        case MediaPlayButton:
    109             if (HTMLMediaElement* mediaElement = parentMediaElement(o))
    110                 paintThemePart(mediaElement->canPlay() ? SafariTheme::MediaPlayButtonPart : SafariTheme::MediaPauseButtonPart, paintInfo.context->platformContext(), r, NSRegularControlSize, determineState(o));
     111            if (MediaControlPlayButtonElement* btn = static_cast<MediaControlPlayButtonElement*>(o->node())) {
     112                bool currentlyPlaying = btn->displayType() == MediaPlayButton;
     113                paintThemePart(currentlyPlaying ? SafariTheme::MediaPauseButtonPart : SafariTheme::MediaPlayButtonPart, paintInfo.context->platformContext(), r, NSRegularControlSize, determineState(o));
     114            }
    111115            break;
    112116        case MediaSeekBackButton:
     
    117121            break;
    118122        case MediaSlider: {
    119             HTMLMediaElement* mediaElement = parentMediaElement(o);
    120             if (!mediaElement)
    121                 break;
    122 
    123             MediaPlayer* player = mediaElement->player();
    124             float duration = player ? player->duration() : 0;
    125             float percentLoaded = duration ? player->maxTimeBuffered() /duration : 0;
    126 
    127             STPaintProgressIndicator(SafariTheme::MediaType, paintInfo.context->platformContext(), r, NSRegularControlSize, 0, percentLoaded);
     123            if (HTMLMediaElement* mediaElement = parentMediaElement(o))
     124                STPaintProgressIndicator(SafariTheme::MediaType, paintInfo.context->platformContext(), r, NSRegularControlSize, 0, mediaElement->percentLoaded());
    128125            break;
    129126        }
  • trunk/WebCore/rendering/RenderThemeMac.mm

    r43367 r44738  
    14791479        return false;
    14801480
    1481     HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(mediaNode);
    1482     if (!mediaElement)
    1483         return false;
    1484    
    1485     LocalCurrentGraphicsContext localContext(paintInfo.context);
    1486     wkDrawMediaUIPart(mediaElement->muted() ? MediaUnMuteButton : MediaMuteButton, mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());
     1481    if (MediaControlPlayButtonElement* btn = static_cast<MediaControlPlayButtonElement*>(node)) {
     1482        LocalCurrentGraphicsContext localContext(paintInfo.context);
     1483        wkDrawMediaUIPart(btn->displayType(), mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());
     1484    }
    14871485    return false;
    14881486}
     
    14951493        return false;
    14961494
    1497     HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(mediaNode);
    1498     if (!mediaElement)
    1499         return false;
    1500 
    1501     LocalCurrentGraphicsContext localContext(paintInfo.context);
    1502     wkDrawMediaUIPart(mediaElement->canPlay() ? MediaPlayButton : MediaPauseButton, mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());
     1495    if (MediaControlPlayButtonElement* btn = static_cast<MediaControlPlayButtonElement*>(node)) {
     1496        LocalCurrentGraphicsContext localContext(paintInfo.context);
     1497        wkDrawMediaUIPart(btn->displayType(), mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());
     1498    }
    15031499    return false;
    15041500}
Note: See TracChangeset for help on using the changeset viewer.