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