Changeset 55079 in webkit


Ignore:
Timestamp:
Feb 22, 2010 5:42:13 AM (14 years ago)
Author:
vestbo@webkit.org
Message:

[Qt] Switching from Phonon to QtMultimedia Backend for Qt 4.7

Patch by Nicholas Young <nicholas.young@nokia.com> on 2010-02-22
Reviewed by Tor Arne Vestbø.

https://bugs.webkit.org/show_bug.cgi?id=34631

No new tests. This patch only affects multimedia backend.

  • WebCore.pro: Build depends on Qt version.
  • css/mediaControlsQt.css: Updated media controls.
  • platform/graphics/MediaPlayer.cpp: Different backend included depending on Qt version.
  • platform/graphics/qt/MediaPlayerPrivateQt.cpp: Added new QtMultimedia Backend.

(WebCore::MediaPlayerPrivate::create):
(WebCore::MediaPlayerPrivate::registerMediaEngine):
(WebCore::MediaPlayerPrivate::getSupportedTypes):
(WebCore::MediaPlayerPrivate::supportsType):
(WebCore::MediaPlayerPrivate::MediaPlayerPrivate):
(WebCore::MediaPlayerPrivate::~MediaPlayerPrivate):
(WebCore::MediaPlayerPrivate::hasVideo):
(WebCore::MediaPlayerPrivate::hasAudio):
(WebCore::MediaPlayerPrivate::load):
(WebCore::MediaPlayerPrivate::cancelLoad):
(WebCore::MediaPlayerPrivate::play):
(WebCore::MediaPlayerPrivate::pause):
(WebCore::MediaPlayerPrivate::paused):
(WebCore::MediaPlayerPrivate::seek):
(WebCore::MediaPlayerPrivate::seeking):
(WebCore::MediaPlayerPrivate::duration):
(WebCore::MediaPlayerPrivate::currentTime):
(WebCore::MediaPlayerPrivate::buffered):
(WebCore::MediaPlayerPrivate::maxTimeSeekable):
(WebCore::MediaPlayerPrivate::bytesLoaded):
(WebCore::MediaPlayerPrivate::totalBytes):
(WebCore::MediaPlayerPrivate::setRate):
(WebCore::MediaPlayerPrivate::setVolume):
(WebCore::MediaPlayerPrivate::supportsMuting):
(WebCore::MediaPlayerPrivate::setMuted):
(WebCore::MediaPlayerPrivate::networkState):
(WebCore::MediaPlayerPrivate::readyState):
(WebCore::MediaPlayerPrivate::setVisible):
(WebCore::MediaPlayerPrivate::mediaStatusChanged):
(WebCore::MediaPlayerPrivate::handleError):
(WebCore::MediaPlayerPrivate::stateChanged):
(WebCore::MediaPlayerPrivate::nativeSizeChanged):
(WebCore::MediaPlayerPrivate::queuedSeekTimeout):
(WebCore::MediaPlayerPrivate::seekTimeout):
(WebCore::MediaPlayerPrivate::positionChanged):
(WebCore::MediaPlayerPrivate::durationChanged):
(WebCore::MediaPlayerPrivate::volumeChanged):
(WebCore::MediaPlayerPrivate::mutedChanged):
(WebCore::MediaPlayerPrivate::updateStates):
(WebCore::MediaPlayerPrivate::setSize):
(WebCore::MediaPlayerPrivate::naturalSize):
(WebCore::MediaPlayerPrivate::paint):
(WebCore::MediaPlayerPrivate::repaint):

  • platform/graphics/qt/MediaPlayerPrivateQt.h: Added new QtMultimedia Backend.

(WebCore::MediaPlayerPrivate::isAvailable):
(WebCore::MediaPlayerPrivate::supportsFullscreen):

  • platform/qt/RenderThemeQt.cpp:

(WebCore::RenderThemeQt::mediaControlsBaselineOpacity): New method.
(WebCore::RenderThemeQt::paintMediaBackground): Background depends on baseline opacity.
(WebCore::RenderThemeQt::paintMediaMuteButton): Changed styling.
(WebCore::RenderThemeQt::paintMediaCurrentTime): Added current time display.
(WebCore::RenderThemeQt::formatMediaControlsCurrentTime): Added time formatting.
(WebCore::RenderThemeQt::formatMediaControlsRemainingTime): Added time formatting.
(WebCore::RenderThemeQt::paintMediaVolumeSliderTrack): Volume slider added.
(WebCore::RenderThemeQt::paintMediaVolumeSliderThumb): Volume slider added.
(WebCore::RenderThemeQt::paintMediaSliderTrack): Updated for QtMultimedia.
(WebCore::RenderThemeQt::paintMediaSliderThumb): Dropped an unnecessary check.
(WebCore::RenderThemeQt::adjustSliderThumbSize): Handle a missing case.

  • platform/qt/RenderThemeQt.h: Reimplemented a few more methods.
Location:
trunk/WebCore
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r55078 r55079  
     12010-02-22  Nicholas Young  <nicholas.young@nokia.com>
     2
     3        Reviewed by Tor Arne Vestbø.
     4
     5        [Qt] Switching from Phonon to QtMultimedia Backend for Qt 4.7
     6
     7        https://bugs.webkit.org/show_bug.cgi?id=34631
     8
     9        No new tests. This patch only affects multimedia backend.
     10
     11        * WebCore.pro: Build depends on Qt version.
     12        * css/mediaControlsQt.css: Updated media controls.
     13        * platform/graphics/MediaPlayer.cpp: Different backend included depending on Qt version.
     14        * platform/graphics/qt/MediaPlayerPrivateQt.cpp: Added new QtMultimedia Backend.
     15        (WebCore::MediaPlayerPrivate::create):
     16        (WebCore::MediaPlayerPrivate::registerMediaEngine):
     17        (WebCore::MediaPlayerPrivate::getSupportedTypes):
     18        (WebCore::MediaPlayerPrivate::supportsType):
     19        (WebCore::MediaPlayerPrivate::MediaPlayerPrivate):
     20        (WebCore::MediaPlayerPrivate::~MediaPlayerPrivate):
     21        (WebCore::MediaPlayerPrivate::hasVideo):
     22        (WebCore::MediaPlayerPrivate::hasAudio):
     23        (WebCore::MediaPlayerPrivate::load):
     24        (WebCore::MediaPlayerPrivate::cancelLoad):
     25        (WebCore::MediaPlayerPrivate::play):
     26        (WebCore::MediaPlayerPrivate::pause):
     27        (WebCore::MediaPlayerPrivate::paused):
     28        (WebCore::MediaPlayerPrivate::seek):
     29        (WebCore::MediaPlayerPrivate::seeking):
     30        (WebCore::MediaPlayerPrivate::duration):
     31        (WebCore::MediaPlayerPrivate::currentTime):
     32        (WebCore::MediaPlayerPrivate::buffered):
     33        (WebCore::MediaPlayerPrivate::maxTimeSeekable):
     34        (WebCore::MediaPlayerPrivate::bytesLoaded):
     35        (WebCore::MediaPlayerPrivate::totalBytes):
     36        (WebCore::MediaPlayerPrivate::setRate):
     37        (WebCore::MediaPlayerPrivate::setVolume):
     38        (WebCore::MediaPlayerPrivate::supportsMuting):
     39        (WebCore::MediaPlayerPrivate::setMuted):
     40        (WebCore::MediaPlayerPrivate::networkState):
     41        (WebCore::MediaPlayerPrivate::readyState):
     42        (WebCore::MediaPlayerPrivate::setVisible):
     43        (WebCore::MediaPlayerPrivate::mediaStatusChanged):
     44        (WebCore::MediaPlayerPrivate::handleError):
     45        (WebCore::MediaPlayerPrivate::stateChanged):
     46        (WebCore::MediaPlayerPrivate::nativeSizeChanged):
     47        (WebCore::MediaPlayerPrivate::queuedSeekTimeout):
     48        (WebCore::MediaPlayerPrivate::seekTimeout):
     49        (WebCore::MediaPlayerPrivate::positionChanged):
     50        (WebCore::MediaPlayerPrivate::durationChanged):
     51        (WebCore::MediaPlayerPrivate::volumeChanged):
     52        (WebCore::MediaPlayerPrivate::mutedChanged):
     53        (WebCore::MediaPlayerPrivate::updateStates):
     54        (WebCore::MediaPlayerPrivate::setSize):
     55        (WebCore::MediaPlayerPrivate::naturalSize):
     56        (WebCore::MediaPlayerPrivate::paint):
     57        (WebCore::MediaPlayerPrivate::repaint):
     58        * platform/graphics/qt/MediaPlayerPrivateQt.h: Added new QtMultimedia Backend.
     59        (WebCore::MediaPlayerPrivate::isAvailable):
     60        (WebCore::MediaPlayerPrivate::supportsFullscreen):
     61        * platform/qt/RenderThemeQt.cpp:
     62        (WebCore::RenderThemeQt::mediaControlsBaselineOpacity): New method.
     63        (WebCore::RenderThemeQt::paintMediaBackground): Background depends on baseline opacity.
     64        (WebCore::RenderThemeQt::paintMediaMuteButton): Changed styling.
     65        (WebCore::RenderThemeQt::paintMediaCurrentTime): Added current time display.
     66        (WebCore::RenderThemeQt::formatMediaControlsCurrentTime): Added time formatting.
     67        (WebCore::RenderThemeQt::formatMediaControlsRemainingTime): Added time formatting.
     68        (WebCore::RenderThemeQt::paintMediaVolumeSliderTrack): Volume slider added.
     69        (WebCore::RenderThemeQt::paintMediaVolumeSliderThumb): Volume slider added.
     70        (WebCore::RenderThemeQt::paintMediaSliderTrack): Updated for QtMultimedia.
     71        (WebCore::RenderThemeQt::paintMediaSliderThumb): Dropped an unnecessary check.
     72        (WebCore::RenderThemeQt::adjustSliderThumbSize): Handle a missing case.
     73        * platform/qt/RenderThemeQt.h: Reimplemented a few more methods.
     74
    1752010-02-22  Alexander Pavlov  <apavlov@chromium.org>
    276
  • trunk/WebCore/WebCore.pro

    r55075 r55079  
    132132include($$PWD/../JavaScriptCore/JavaScriptCore.pri)
    133133
    134 # Disable HTML5 media compilation if phonon is unavailable
    135 !contains(DEFINES, ENABLE_VIDEO=1) {
    136     !contains(QT_CONFIG, phonon) {
    137         DEFINES -= ENABLE_VIDEO=1
    138         DEFINES += ENABLE_VIDEO=0
     134
     135# HTML5 Media Support
     136# We require phonon for versions of Qt < 4.7
     137# We require QtMultimedia for versions of Qt >= 4.7
     138!contains(DEFINES, ENABLE_VIDEO=.) {
     139    DEFINES -= ENABLE_VIDEO=1
     140    DEFINES += ENABLE_VIDEO=0
     141
     142    lessThan(QT_MINOR_VERSION, 7):contains(QT_CONFIG, phonon) {
     143        DEFINES -= ENABLE_VIDEO=0
     144        DEFINES += ENABLE_VIDEO=1
     145    }
     146    !lessThan(QT_MINOR_VERSION, 7):contains(QT_CONFIG, multimedia) {
     147        DEFINES -= ENABLE_VIDEO=0
     148        DEFINES += ENABLE_VIDEO=1
    139149    }
    140150}
     
    23052315        bindings/js/JSAudioConstructor.cpp
    23062316
    2307         HEADERS += \
    2308             platform/graphics/qt/MediaPlayerPrivatePhonon.h
    2309 
    2310         SOURCES += \
    2311             platform/graphics/qt/MediaPlayerPrivatePhonon.cpp
    2312 
    2313         # Add phonon manually to prevent it from coming first in
    2314         # the include paths, as Phonon's path.h conflicts with
    2315         # WebCore's Path.h on case-insensitive filesystems.
    2316         qtAddLibrary(phonon)
    2317         INCLUDEPATH -= $$QMAKE_INCDIR_QT/phonon
    2318         INCLUDEPATH += $$QMAKE_INCDIR_QT/phonon
    2319         mac {
    2320             INCLUDEPATH -= $$QMAKE_LIBDIR_QT/phonon.framework/Headers
    2321             INCLUDEPATH += $$QMAKE_LIBDIR_QT/phonon.framework/Headers
     2317        # QtMultimedia since 4.7
     2318        greaterThan(QT_MINOR_VERSION, 6) {
     2319            HEADERS += platform/graphics/qt/MediaPlayerPrivateQt.h
     2320            SOURCES += platform/graphics/qt/MediaPlayerPrivateQt.cpp
     2321
     2322            QT += multimedia
     2323        } else {
     2324            HEADERS += \
     2325                platform/graphics/qt/MediaPlayerPrivatePhonon.h
     2326
     2327            SOURCES += \
     2328                platform/graphics/qt/MediaPlayerPrivatePhonon.cpp
     2329
     2330            # Add phonon manually to prevent it from coming first in
     2331            # the include paths, as Phonon's path.h conflicts with
     2332            # WebCore's Path.h on case-insensitive filesystems.
     2333            qtAddLibrary(phonon)
     2334            INCLUDEPATH -= $$QMAKE_INCDIR_QT/phonon
     2335            INCLUDEPATH += $$QMAKE_INCDIR_QT/phonon
     2336            mac {
     2337                INCLUDEPATH -= $$QMAKE_LIBDIR_QT/phonon.framework/Headers
     2338                INCLUDEPATH += $$QMAKE_LIBDIR_QT/phonon.framework/Headers
     2339            }
    23222340        }
    23232341
  • trunk/WebCore/css/mediaControlsQt.css

    r49175 r55079  
    5252
    5353audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button {
    54     left: auto;
    55     right: 5px;
    5654    width: 12px;
    5755    height: 12px;
     
    6159
    6260audio::-webkit-media-controls-play-button, video::-webkit-media-controls-play-button {
    63     left: 5px;
    6461    width: 9px;
    6562    height: 12px;
     
    7370
    7471audio::-webkit-media-controls-current-time-display, video::-webkit-media-controls-current-time-display {
    75     display: none;
     72    -webkit-appearance: media-current-time-display;
     73    -webkit-user-select: none;
     74    display: inline-block;
     75    height: 12px;
     76    padding: 6px;
     77    margin: 5px 3px;
     78
     79    overflow: hidden;
     80    cursor: default;
     81
     82    text-align: center;
     83    font-size: 10px;
     84    font-family: Verdana;
     85    font-weight: bold;
     86    color: white;
    7687}
    7788
     
    8192
    8293audio::-webkit-media-controls-timeline, video::-webkit-media-controls-timeline {
    83     left: 42px;
    84     right: 34px;
    8594    height: 12px;
    8695    padding: 6px 8px;
    87     margin: 5px 0px;
     96    margin: 5px 3px;
    8897}
    8998
    9099audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container {
    91     display: none;
     100    -webkit-appearance: media-volume-slider-container;
     101    position: absolute;
     102    height: 103px;
     103    width: 24px;
    92104}
    93105
    94106audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider {
    95     display: none;
     107    -webkit-appearance: media-volume-slider;
     108    display: inline;
     109    position: absolute;
     110
     111    width: 12px;
     112    padding: 6px;
     113    height: 88px;
     114    margin: 0 0 3px 0;
    96115}
    97116
    98117audio::-webkit-media-controls-seek-back-button, video::-webkit-media-controls-seek-back-button {
    99     /* Since MediaControlElements are always created with a renderer we have to hide
    100        the controls we don't use, so they don't mess up activation and event handling */
    101     left: 0px;
    102     top: 0px;
    103     width: 0px;
    104     height: 0px;
    105 
    106118    display: none;
    107119}
    108120
    109121audio::-webkit-media-controls-seek-forward-button, video::-webkit-media-controls-seek-forward-button {
    110     /* Since MediaControlElements are always created with a renderer we have to hide
    111        the controls we don't use, so they don't mess up activation and event handling */
    112     left: 0px;
    113     top: 0px;
    114     width: 0px;
    115     height: 0px;
    116 
    117122    display: none;
    118123}
    119124
    120125audio::-webkit-media-controls-fullscreen-button, video::-webkit-media-controls-fullscreen-button {
    121     /* Since MediaControlElements are always created with a renderer we have to hide
    122        the controls we don't use, so they don't mess up activation and event handling */
    123     left: 0px;
    124     top: 0px;
    125     width: 0px;
    126     height: 0px;
    127 
    128126    display: none;
    129127}
     
    137135}
    138136
     137audio::-webkit-media-controls-toggle-closed-captions-button, video::-webkit-media-controls-toggle-closed-captions-button {
     138    display: none;
     139}
     140
  • trunk/WebCore/platform/graphics/MediaPlayer.cpp

    r54826 r55079  
    3838#include "TimeRanges.h"
    3939
     40#if PLATFORM(QT)
     41#include <QtGlobal>
     42#endif
     43
    4044#if PLATFORM(MAC)
    4145#include "MediaPlayerPrivateQTKit.h"
     
    4751#include "MediaPlayerPrivateGStreamer.h"
    4852#elif PLATFORM(QT)
     53#if QT_VERSION < 0x040700
    4954#include "MediaPlayerPrivatePhonon.h"
     55#else
     56#include "MediaPlayerPrivateQt.h"
     57#endif
    5058#elif PLATFORM(CHROMIUM)
    5159#include "MediaPlayerPrivateChromium.h"
  • trunk/WebCore/platform/qt/RenderThemeQt.cpp

    r54180 r55079  
    4040#include "FontSelector.h"
    4141#include "GraphicsContext.h"
     42#include "HTMLInputElement.h"
    4243#include "HTMLMediaElement.h"
    4344#include "HTMLNames.h"
     
    4849#include "RenderSlider.h"
    4950#include "RenderTheme.h"
     51#include "TimeRanges.h"
    5052#include "ScrollbarThemeQt.h"
    5153#include "UserAgentStyleSheets.h"
     
    883885}
    884886
     887double RenderThemeQt::mediaControlsBaselineOpacity() const
     888{
     889    return 0.4;
     890}
     891
    885892void RenderThemeQt::paintMediaBackground(QPainter* painter, const IntRect& r) const
    886893{
    887894    painter->setPen(Qt::NoPen);
    888     static QColor transparentBlack(0, 0, 0, 100);
     895    static QColor transparentBlack(0, 0, 0, mediaControlsBaselineOpacity() * 255);
    889896    painter->setBrush(transparentBlack);
    890897    painter->drawRoundedRect(r.x(), r.y(), r.width(), r.height(), 5.0, 5.0);
     
    922929            QPointF(80, 100), QPointF(50, 70), QPointF(20, 70)};
    923930
    924     p.painter->setBrush(getMediaControlForegroundColor(o));
     931    p.painter->setBrush(mediaElement->muted() ? Qt::darkRed : getMediaControlForegroundColor(o));
    925932    p.painter->drawPolygon(speakerPolygon, 6);
    926 
    927     if (mediaElement->muted()) {
    928         p.painter->setPen(Qt::red);
    929         p.painter->drawLine(0, 100, 100, 0);
    930     }
    931933
    932934    return false;
     
    972974}
    973975
     976bool RenderThemeQt::paintMediaCurrentTime(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
     977{
     978    StylePainter p(this, paintInfo);
     979    if (!p.isValid())
     980        return true;
     981
     982    p.painter->setRenderHint(QPainter::Antialiasing, true);
     983    paintMediaBackground(p.painter, r);
     984
     985    return false;
     986}
     987
     988String RenderThemeQt::formatMediaControlsCurrentTime(float currentTime, float duration) const
     989{
     990    return formatMediaControlsTime(currentTime) + " / " + formatMediaControlsTime(duration);
     991}
     992
     993String RenderThemeQt::formatMediaControlsRemainingTime(float currentTime, float duration) const
     994{
     995    return String();
     996}
     997
     998bool RenderThemeQt::paintMediaVolumeSliderTrack(RenderObject *o, const RenderObject::PaintInfo &paintInfo, const IntRect &r)
     999{
     1000    StylePainter p(this, paintInfo);
     1001    if (!p.isValid())
     1002        return true;
     1003
     1004    p.painter->setRenderHint(QPainter::Antialiasing, true);
     1005
     1006    paintMediaBackground(p.painter, r);
     1007
     1008    if (!o->isSlider())
     1009        return false;
     1010
     1011    IntRect b = toRenderBox(o)->contentBoxRect();
     1012
     1013    // Position the outer rectangle
     1014    int top = r.y() + b.y();
     1015    int left = r.x() + b.x();
     1016    int width = b.width();
     1017    int height = b.height();
     1018
     1019    // Get the scale color from the page client
     1020    QPalette pal = QApplication::palette();
     1021    setPaletteFromPageClientIfExists(pal);
     1022    const QColor highlightText = pal.brush(QPalette::Active, QPalette::HighlightedText).color();
     1023    const QColor scaleColor(highlightText.red(), highlightText.green(), highlightText.blue(), mediaControlsBaselineOpacity() * 255);
     1024
     1025    // Draw the outer rectangle
     1026    p.painter->setBrush(scaleColor);
     1027    p.painter->drawRect(left, top, width, height);
     1028
     1029    if (!o->node() || !o->node()->hasTagName(inputTag))
     1030        return false;
     1031
     1032    HTMLInputElement* slider = static_cast<HTMLInputElement*>(o->node());
     1033
     1034    // Position the inner rectangle
     1035    height = height * slider->valueAsNumber();
     1036    top += b.height() - height;
     1037
     1038    // Draw the inner rectangle
     1039    p.painter->setPen(Qt::NoPen);
     1040    p.painter->setBrush(getMediaControlForegroundColor(o));
     1041    p.painter->drawRect(left, top, width, height);
     1042
     1043    return false;
     1044}
     1045
     1046bool RenderThemeQt::paintMediaVolumeSliderThumb(RenderObject *o, const RenderObject::PaintInfo &paintInfo, const IntRect &r)
     1047{
     1048    StylePainter p(this, paintInfo);
     1049    if (!p.isValid())
     1050        return true;
     1051
     1052    // Nothing to draw here, this is all done in the track
     1053    return false;
     1054}
     1055
    9741056bool RenderThemeQt::paintMediaSliderTrack(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
    9751057{
     
    9861068    paintMediaBackground(p.painter, r);
    9871069
     1070#if QT_VERSION >= 0x040700
     1071    if (MediaPlayer* player = mediaElement->player()) {
     1072        // Get the buffered parts of the media
     1073        PassRefPtr<TimeRanges> buffered = player->buffered();
     1074        if (buffered->length() > 0 && player->duration() < std::numeric_limits<float>::infinity()) {
     1075            // Set the transform and brush
     1076            WorldMatrixTransformer transformer(p.painter, o, r);
     1077            p.painter->setBrush(getMediaControlForegroundColor());
     1078
     1079            // Paint each buffered section
     1080            ExceptionCode ex;
     1081            for (int i = 0; i < buffered->length(); i++) {
     1082                float startX = (buffered->start(i, ex) / player->duration()) * 100;
     1083                float width = ((buffered->end(i, ex) / player->duration()) * 100) - startX;
     1084                p.painter->drawRect(startX, 37, width, 26);
     1085            }
     1086        }
     1087    }
     1088#endif
     1089
    9881090    return false;
    9891091}
     
    9911093bool RenderThemeQt::paintMediaSliderThumb(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r)
    9921094{
    993     HTMLMediaElement* mediaElement = getMediaElementFromRenderObject(o->parent());
    994     if (!mediaElement)
    995         return false;
    996 
    9971095    StylePainter p(this, paintInfo);
    9981096    if (!p.isValid())
     
    10201118        o->style()->setWidth(Length(parentHeight / 3, Fixed));
    10211119        o->style()->setHeight(Length(parentHeight, Fixed));
     1120    } else if (part == MediaVolumeSliderThumbPart) {
     1121        RenderStyle* parentStyle = o->parent()->style();
     1122        Q_ASSERT(parentStyle);
     1123
     1124        int parentWidth = parentStyle->width().value();
     1125        o->style()->setHeight(Length(parentWidth / 3, Fixed));
     1126        o->style()->setWidth(Length(parentWidth, Fixed));
    10221127    } else if (part == SliderThumbHorizontalPart || part == SliderThumbVerticalPart) {
    10231128        QStyleOptionSlider option;
  • trunk/WebCore/platform/qt/RenderThemeQt.h

    r54180 r55079  
    128128    virtual bool paintMediaSliderTrack(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
    129129    virtual bool paintMediaSliderThumb(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
    130 
     130    virtual bool paintMediaCurrentTime(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     131    virtual bool paintMediaVolumeSliderTrack(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     132    virtual bool paintMediaVolumeSliderThumb(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     133    virtual String formatMediaControlsCurrentTime(float currentTime, float duration) const;
     134    virtual String formatMediaControlsRemainingTime(float currentTime, float duration) const;
    131135private:
    132136    HTMLMediaElement* getMediaElementFromRenderObject(RenderObject* o) const;
    133137    void paintMediaBackground(QPainter* painter, const IntRect& r) const;
     138    double mediaControlsBaselineOpacity() const;
    134139    QColor getMediaControlForegroundColor(RenderObject* o = 0) const;
    135140#endif
Note: See TracChangeset for help on using the changeset viewer.