Ignore:
Timestamp:
Sep 15, 2013, 7:13:55 AM (12 years ago)
Author:
[email protected]
Message:

CTTE: RenderMedia and RenderVideo are never anonymous.
<https://webkit.org/b/121388>

Reviewed by Sam Weinig.

Codify the following:

  • RenderMedia always has an HTMLMediaElement.
  • RenderVideo always has an HTMLVideoElement.

None of these renderers are ever anonymous, so delete element() and provide
strongly typed reference getters instead.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/rendering/RenderVideo.cpp

    r155810 r155811  
    4949using namespace HTMLNames;
    5050
    51 RenderVideo::RenderVideo(HTMLVideoElement* video)
    52     : RenderMedia(video)
     51RenderVideo::RenderVideo(HTMLVideoElement& element)
     52    : RenderMedia(element)
    5353{
    5454    setIntrinsicSize(calculateIntrinsicSize());
     
    5757RenderVideo::~RenderVideo()
    5858{
    59     if (MediaPlayer* p = mediaElement()->player()) {
    60         p->setVisible(false);
    61         p->setFrameView(0);
     59    if (MediaPlayer* player = videoElement().player()) {
     60        player->setVisible(false);
     61        player->setFrameView(0);
    6262    }
    6363}
     
    7474void RenderVideo::intrinsicSizeChanged()
    7575{
    76     if (videoElement()->shouldDisplayPosterImage())
     76    if (videoElement().shouldDisplayPosterImage())
    7777        RenderMedia::intrinsicSizeChanged();
    7878    updateIntrinsicSize();
     
    8585
    8686    // Never set the element size to zero when in a media document.
    87     if (size.isEmpty() && element()->document().isMediaDocument())
     87    if (size.isEmpty() && document().isMediaDocument())
    8888        return;
    8989
     
    9898LayoutSize RenderVideo::calculateIntrinsicSize()
    9999{
    100     HTMLVideoElement* video = videoElement();
    101    
    102100    // Spec text from 4.8.6
    103101    //
     
    109107    // of the video resource, if that is available; otherwise it is the intrinsic
    110108    // height of the poster frame, if that is available; otherwise it is 150 CSS pixels.
    111     MediaPlayer* player = mediaElement()->player();
    112     if (player && video->readyState() >= HTMLVideoElement::HAVE_METADATA) {
     109    MediaPlayer* player = videoElement().player();
     110    if (player && videoElement().readyState() >= HTMLVideoElement::HAVE_METADATA) {
    113111        LayoutSize size = player->naturalSize();
    114112        if (!size.isEmpty())
     
    116114    }
    117115
    118     if (video->shouldDisplayPosterImage() && !m_cachedImageSize.isEmpty() && !imageResource()->errorOccurred())
     116    if (videoElement().shouldDisplayPosterImage() && !m_cachedImageSize.isEmpty() && !imageResource()->errorOccurred())
    119117        return m_cachedImageSize;
    120118
    121119    // When the natural size of the video is unavailable, we use the provided
    122120    // width and height attributes of the video element as the intrinsic size until
    123     // better values become available. 
    124     if (video->hasAttribute(widthAttr) && video->hasAttribute(heightAttr))
    125         return LayoutSize(video->width(), video->height());
     121    // better values become available.
     122    if (videoElement().hasAttribute(widthAttr) && videoElement().hasAttribute(heightAttr))
     123        return LayoutSize(videoElement().width(), videoElement().height());
    126124
    127125    // <video> in standalone media documents should not use the default 300x150
     
    129127    // size to 300x1 the video will resize itself in these cases, and audio will
    130128    // have the correct height (it needs to be > 0 for controls to render properly).
    131     if (video->document().isMediaDocument())
     129    if (videoElement().document().isMediaDocument())
    132130        return LayoutSize(defaultSize().width(), 1);
    133131
     
    142140    // even if we know the video intrinsic size but aren't able to draw video frames yet
    143141    // (we don't want to scale the poster to the video size without keeping aspect ratio).
    144     if (videoElement()->shouldDisplayPosterImage())
     142    if (videoElement().shouldDisplayPosterImage())
    145143        m_cachedImageSize = intrinsicSize();
    146144
     
    154152    LayoutSize intrinsicSize = this->intrinsicSize();
    155153
    156     if (videoElement()->shouldDisplayPosterImage())
     154    if (videoElement().shouldDisplayPosterImage())
    157155        intrinsicSize = m_cachedImageSize;
    158156
     
    162160bool RenderVideo::shouldDisplayVideo() const
    163161{
    164     return !videoElement()->shouldDisplayPosterImage();
     162    return !videoElement().shouldDisplayPosterImage();
    165163}
    166164
    167165void RenderVideo::paintReplaced(PaintInfo& paintInfo, const LayoutPoint& paintOffset)
    168166{
    169     MediaPlayer* mediaPlayer = mediaElement()->player();
    170     bool displayingPoster = videoElement()->shouldDisplayPosterImage();
     167    MediaPlayer* mediaPlayer = videoElement().player();
     168    bool displayingPoster = videoElement().shouldDisplayPosterImage();
    171169
    172170    Page* page = frame().page();
     
    212210}
    213211   
    214 HTMLVideoElement* RenderVideo::videoElement() const
    215 {
    216     return toHTMLVideoElement(element());
     212HTMLVideoElement& RenderVideo::videoElement() const
     213{
     214    return toHTMLVideoElement(RenderMedia::mediaElement());
    217215}
    218216
     
    230228    updateIntrinsicSize();
    231229
    232     MediaPlayer* mediaPlayer = mediaElement()->player();
     230    MediaPlayer* mediaPlayer = videoElement().player();
    233231    if (!mediaPlayer)
    234232        return;
    235233
    236     if (!videoElement()->inActiveDocument()) {
     234    if (!videoElement().inActiveDocument()) {
    237235        mediaPlayer->setVisible(false);
    238236        return;
     
    268266bool RenderVideo::supportsAcceleratedRendering() const
    269267{
    270     MediaPlayer* p = mediaElement()->player();
    271     if (p)
    272         return p->supportsAcceleratedRendering();
    273 
     268    if (MediaPlayer* player = videoElement().player())
     269        return player->supportsAcceleratedRendering();
    274270    return false;
    275271}
     
    277273void RenderVideo::acceleratedRenderingStateChanged()
    278274{
    279     MediaPlayer* p = mediaElement()->player();
    280     if (p)
    281         p->acceleratedRenderingStateChanged();
     275    if (MediaPlayer* player = videoElement().player())
     276        player->acceleratedRenderingStateChanged();
    282277}
    283278#endif  // USE(ACCELERATED_COMPOSITING)
     
    285280bool RenderVideo::requiresImmediateCompositing() const
    286281{
    287     MediaPlayer* player = mediaElement()->player();
     282    MediaPlayer* player = videoElement().player();
    288283    return player && player->requiresImmediateCompositing();
    289284}
     
    334329bool RenderVideo::foregroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect, unsigned maxDepthToTest) const
    335330{
    336     if (videoElement()->shouldDisplayPosterImage())
     331    if (videoElement().shouldDisplayPosterImage())
    337332        return RenderImage::foregroundIsKnownToBeOpaqueInRect(localRect, maxDepthToTest);
    338333
     
    340335        return false;
    341336
    342     if (MediaPlayer* player = mediaElement()->player())
     337    if (MediaPlayer* player = videoElement().player())
    343338        return player->hasAvailableVideoFrame();
    344339
Note: See TracChangeset for help on using the changeset viewer.