15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *           (C) 2000 Simon Hausmann <hausmann@kde.org>
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010, 2012 Apple Inc. All rights reserved.
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is free software; you can redistribute it and/or
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modify it under the terms of the GNU Library General Public
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * License as published by the Free Software Foundation; either
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * version 2 of the License, or (at your option) any later version.
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is distributed in the hope that it will be useful,
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Library General Public License for more details.
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * along with this library; see the file COPYING.LIB.  If not, write to
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Boston, MA 02110-1301, USA.
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef RenderEmbeddedObject_h
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define RenderEmbeddedObject_h
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/RenderPart.h"
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class TextRun;
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Renderer for embeds and objects, often, but not always, rendered via plug-ins.
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// For example, <embed src="foo.html"> does not invoke a plug-in.
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderEmbeddedObject : public RenderPart {
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    RenderEmbeddedObject(Element*);
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual ~RenderEmbeddedObject();
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    enum PluginUnavailabilityReason {
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        PluginMissing,
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        PluginBlockedByContentSecurityPolicy,
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    };
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setPluginUnavailabilityReason(PluginUnavailabilityReason);
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool showsUnavailablePluginIndicator() const;
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
46197021e6b966cfb06891637935ef33fff06433d1Ben Murdochprivate:
47197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    virtual void paintContents(PaintInfo&, const LayoutPoint&) OVERRIDE FINAL;
4853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void paintReplaced(PaintInfo&, const LayoutPoint&) OVERRIDE FINAL;
4953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void paint(PaintInfo&, const LayoutPoint&) OVERRIDE FINAL;
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual void layout() OVERRIDE FINAL;
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual const char* renderName() const OVERRIDE { return "RenderEmbeddedObject"; }
5453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool isEmbeddedObject() const OVERRIDE FINAL { return true; }
55f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu    virtual RenderBox* embeddedContentBox() const OVERRIDE FINAL;
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual LayerType layerTypeRequired() const OVERRIDE FINAL;
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    virtual bool scroll(ScrollDirection, ScrollGranularity, float multiplier) OVERRIDE FINAL;
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool getReplacementTextGeometry(const LayoutPoint& accumulatedOffset, FloatRect& contentRect, Path&, FloatRect& replacementTextRect, Font&, TextRun&, float& textWidth) const;
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    virtual CompositingReasons additionalCompositingReasons() const OVERRIDE;
6407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_showsUnavailablePluginIndicator;
665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    PluginUnavailabilityReason m_pluginUnavailabilityReason;
675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String m_unavailablePluginReplacementText;
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
70bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderEmbeddedObject, isEmbeddedObject());
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
72c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // RenderEmbeddedObject_h
75