Changeset 155810 in webkit for trunk/Source/WebCore/rendering/RenderVideo.cpp
- Timestamp:
- Sep 15, 2013, 7:12:11 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/rendering/RenderVideo.cpp
r155809 r155810 49 49 using namespace HTMLNames; 50 50 51 RenderVideo::RenderVideo(HTMLVideoElement & element)52 : RenderMedia( element)51 RenderVideo::RenderVideo(HTMLVideoElement* video) 52 : RenderMedia(video) 53 53 { 54 54 setIntrinsicSize(calculateIntrinsicSize()); … … 57 57 RenderVideo::~RenderVideo() 58 58 { 59 if (MediaPlayer* p layer = videoElement().player()) {60 p layer->setVisible(false);61 p layer->setFrameView(0);59 if (MediaPlayer* p = mediaElement()->player()) { 60 p->setVisible(false); 61 p->setFrameView(0); 62 62 } 63 63 } … … 74 74 void RenderVideo::intrinsicSizeChanged() 75 75 { 76 if (videoElement() .shouldDisplayPosterImage())76 if (videoElement()->shouldDisplayPosterImage()) 77 77 RenderMedia::intrinsicSizeChanged(); 78 78 updateIntrinsicSize(); … … 85 85 86 86 // Never set the element size to zero when in a media document. 87 if (size.isEmpty() && document().isMediaDocument())87 if (size.isEmpty() && element()->document().isMediaDocument()) 88 88 return; 89 89 … … 98 98 LayoutSize RenderVideo::calculateIntrinsicSize() 99 99 { 100 HTMLVideoElement* video = videoElement(); 101 100 102 // Spec text from 4.8.6 101 103 // … … 107 109 // of the video resource, if that is available; otherwise it is the intrinsic 108 110 // height of the poster frame, if that is available; otherwise it is 150 CSS pixels. 109 MediaPlayer* player = videoElement().player();110 if (player && video Element().readyState() >= HTMLVideoElement::HAVE_METADATA) {111 MediaPlayer* player = mediaElement()->player(); 112 if (player && video->readyState() >= HTMLVideoElement::HAVE_METADATA) { 111 113 LayoutSize size = player->naturalSize(); 112 114 if (!size.isEmpty()) … … 114 116 } 115 117 116 if (video Element().shouldDisplayPosterImage() && !m_cachedImageSize.isEmpty() && !imageResource()->errorOccurred())118 if (video->shouldDisplayPosterImage() && !m_cachedImageSize.isEmpty() && !imageResource()->errorOccurred()) 117 119 return m_cachedImageSize; 118 120 119 121 // When the natural size of the video is unavailable, we use the provided 120 122 // width and height attributes of the video element as the intrinsic size until 121 // better values become available. 122 if (video Element().hasAttribute(widthAttr) && videoElement().hasAttribute(heightAttr))123 return LayoutSize(video Element().width(), videoElement().height());123 // better values become available. 124 if (video->hasAttribute(widthAttr) && video->hasAttribute(heightAttr)) 125 return LayoutSize(video->width(), video->height()); 124 126 125 127 // <video> in standalone media documents should not use the default 300x150 … … 127 129 // size to 300x1 the video will resize itself in these cases, and audio will 128 130 // have the correct height (it needs to be > 0 for controls to render properly). 129 if (video Element().document().isMediaDocument())131 if (video->document().isMediaDocument()) 130 132 return LayoutSize(defaultSize().width(), 1); 131 133 … … 140 142 // even if we know the video intrinsic size but aren't able to draw video frames yet 141 143 // (we don't want to scale the poster to the video size without keeping aspect ratio). 142 if (videoElement() .shouldDisplayPosterImage())144 if (videoElement()->shouldDisplayPosterImage()) 143 145 m_cachedImageSize = intrinsicSize(); 144 146 … … 152 154 LayoutSize intrinsicSize = this->intrinsicSize(); 153 155 154 if (videoElement() .shouldDisplayPosterImage())156 if (videoElement()->shouldDisplayPosterImage()) 155 157 intrinsicSize = m_cachedImageSize; 156 158 … … 160 162 bool RenderVideo::shouldDisplayVideo() const 161 163 { 162 return !videoElement() .shouldDisplayPosterImage();164 return !videoElement()->shouldDisplayPosterImage(); 163 165 } 164 166 165 167 void RenderVideo::paintReplaced(PaintInfo& paintInfo, const LayoutPoint& paintOffset) 166 168 { 167 MediaPlayer* mediaPlayer = videoElement().player();168 bool displayingPoster = videoElement() .shouldDisplayPosterImage();169 MediaPlayer* mediaPlayer = mediaElement()->player(); 170 bool displayingPoster = videoElement()->shouldDisplayPosterImage(); 169 171 170 172 Page* page = frame().page(); … … 210 212 } 211 213 212 HTMLVideoElement &RenderVideo::videoElement() const213 { 214 return toHTMLVideoElement( RenderMedia::mediaElement());214 HTMLVideoElement* RenderVideo::videoElement() const 215 { 216 return toHTMLVideoElement(element()); 215 217 } 216 218 … … 228 230 updateIntrinsicSize(); 229 231 230 MediaPlayer* mediaPlayer = videoElement().player();232 MediaPlayer* mediaPlayer = mediaElement()->player(); 231 233 if (!mediaPlayer) 232 234 return; 233 235 234 if (!videoElement() .inActiveDocument()) {236 if (!videoElement()->inActiveDocument()) { 235 237 mediaPlayer->setVisible(false); 236 238 return; … … 266 268 bool RenderVideo::supportsAcceleratedRendering() const 267 269 { 268 if (MediaPlayer* player = videoElement().player()) 269 return player->supportsAcceleratedRendering(); 270 MediaPlayer* p = mediaElement()->player(); 271 if (p) 272 return p->supportsAcceleratedRendering(); 273 270 274 return false; 271 275 } … … 273 277 void RenderVideo::acceleratedRenderingStateChanged() 274 278 { 275 if (MediaPlayer* player = videoElement().player()) 276 player->acceleratedRenderingStateChanged(); 279 MediaPlayer* p = mediaElement()->player(); 280 if (p) 281 p->acceleratedRenderingStateChanged(); 277 282 } 278 283 #endif // USE(ACCELERATED_COMPOSITING) … … 280 285 bool RenderVideo::requiresImmediateCompositing() const 281 286 { 282 MediaPlayer* player = videoElement().player();287 MediaPlayer* player = mediaElement()->player(); 283 288 return player && player->requiresImmediateCompositing(); 284 289 } … … 329 334 bool RenderVideo::foregroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect, unsigned maxDepthToTest) const 330 335 { 331 if (videoElement() .shouldDisplayPosterImage())336 if (videoElement()->shouldDisplayPosterImage()) 332 337 return RenderImage::foregroundIsKnownToBeOpaqueInRect(localRect, maxDepthToTest); 333 338 … … 335 340 return false; 336 341 337 if (MediaPlayer* player = videoElement().player())342 if (MediaPlayer* player = mediaElement()->player()) 338 343 return player->hasAvailableVideoFrame(); 339 344
Note:
See TracChangeset
for help on using the changeset viewer.