WebCore should build successfully even with -DENABLE_UNIFIED_BUILDS=OFF
[WebKit-https.git] / Source / WebCore / rendering / RenderVideo.h
index 9091490..8e25c68 100644 (file)
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
  *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#ifndef RenderVideo_h
-#define RenderVideo_h
+#pragma once
 
 #if ENABLE(VIDEO)
 
+#include "HTMLVideoElement.h"
 #include "RenderMedia.h"
 
 namespace WebCore {
-    
-class HTMLMediaElement;
-class HTMLVideoElement;
 
-class RenderVideo : public RenderMedia {
+class RenderVideo final : public RenderMedia {
+    WTF_MAKE_ISO_ALLOCATED(RenderVideo);
 public:
-    RenderVideo(HTMLVideoElement*);
+    RenderVideo(HTMLVideoElement&, RenderStyle&&);
     virtual ~RenderVideo();
 
-    IntRect videoBox() const;
+    HTMLVideoElement& videoElement() const;
+
+    WEBCORE_EXPORT IntRect videoBox() const;
 
     static IntSize defaultSize();
 
-#if USE(ACCELERATED_COMPOSITING)
     bool supportsAcceleratedRendering() const;
     void acceleratedRenderingStateChanged();
-#endif
 
-    virtual bool shouldDisplayVideo() const;
+    bool requiresImmediateCompositing() const;
+
+    bool shouldDisplayVideo() const;
+
+    void updateFromElement() final;
 
 private:
-    virtual void updateFromElement();
-    inline HTMLVideoElement* videoElement() const;
+    void willBeDestroyed() override;
+    void mediaElement() const = delete;
+
+    void intrinsicSizeChanged() final;
+    LayoutSize calculateIntrinsicSize();
+    bool updateIntrinsicSize();
 
-    virtual void intrinsicSizeChanged();
-    IntSize calculateIntrinsicSize();
-    void updateIntrinsicSize();
+    void imageChanged(WrappedImagePtr, const IntRect*) final;
 
-    virtual void imageChanged(WrappedImagePtr, const IntRect*);
+    const char* renderName() const final { return "RenderVideo"; }
 
-    virtual const char* renderName() const { return "RenderVideo"; }
+    bool requiresLayer() const final { return true; }
+    bool isVideo() const final { return true; }
 
-    virtual bool requiresLayer() const { return true; }
-    virtual bool isVideo() const { return true; }
+    void paintReplaced(PaintInfo&, const LayoutPoint&) final;
 
-    virtual void paintReplaced(PaintInfo&, int tx, int ty);
+    void layout() final;
 
-    virtual void layout();
+    void visibleInViewportStateChanged() final;
 
-    virtual int computeReplacedLogicalWidth(bool includeMaxWidth = true) const;
-    virtual int computeReplacedLogicalHeight() const;
-    virtual int minimumReplacedHeight() const;
+    LayoutUnit computeReplacedLogicalWidth(ShouldComputePreferred  = ComputeActual) const final;
+    LayoutUnit minimumReplacedHeight() const final;
+
+#if ENABLE(FULLSCREEN_API)
+    LayoutUnit offsetLeft() const final;
+    LayoutUnit offsetTop() const final;
+    LayoutUnit offsetWidth() const final;
+    LayoutUnit offsetHeight() const final;
+#endif
 
     void updatePlayer();
 
-    IntSize m_cachedImageSize;
+    bool foregroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect, unsigned maxDepthToTest) const final;
+
+    LayoutSize m_cachedImageSize;
 };
 
-inline RenderVideo* toRenderVideo(RenderObject* object)
+inline RenderVideo* HTMLVideoElement::renderer() const
 {
-    ASSERT(!object || object->isVideo());
-    return static_cast<RenderVideo*>(object);
+    return downcast<RenderVideo>(HTMLMediaElement::renderer());
 }
 
-// This will catch anyone doing an unnecessary cast.
-void toRenderVideo(const RenderVideo*);
-
 } // namespace WebCore
 
-#endif
-#endif // RenderVideo_h
+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderVideo, isVideo())
+
+#endif // ENABLE(VIDEO)