18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version.
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful,
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details.
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA.
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef HTMLFrameOwnerElement_h
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define HTMLFrameOwnerElement_h
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "FrameLoaderTypes.h"
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HTMLElement.h"
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass DOMWindow;
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Frame;
315ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenclass RenderPart;
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG)
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass SVGDocument;
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass HTMLFrameOwnerElement : public HTMLElement {
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual ~HTMLFrameOwnerElement();
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Frame* contentFrame() const { return m_contentFrame; }
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    DOMWindow* contentWindow() const;
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Document* contentDocument() const;
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
455ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    // Most subclasses use RenderPart (either RenderEmbeddedObject or RenderIFrame)
465ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    // except for HTMLObjectElement and HTMLEmbedElement which may return any
475ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    // RenderObject when using fallback content.
485ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    RenderPart* renderPart() const;
495ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG)
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    SVGDocument* getSVGDocument(ExceptionCode&) const;
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
54231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    virtual ScrollbarMode scrollingMode() const { return ScrollbarAuto; }
55231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    SandboxFlags sandboxFlags() const { return m_sandboxFlags; }
57d0825bca7fe65beaee391d30da42e937db621564Steve Block
58231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockprotected:
59231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    HTMLFrameOwnerElement(const QualifiedName& tagName, Document*);
60231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    void setSandboxFlags(SandboxFlags);
62d0825bca7fe65beaee391d30da42e937db621564Steve Block
63d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual void willRemove();
64d0825bca7fe65beaee391d30da42e937db621564Steve Block
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate:
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    friend class Frame;
67231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
68231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    virtual bool isFrameOwnerElement() const { return true; }
692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual bool isKeyboardFocusable(KeyboardEvent*) const;
70231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Frame* m_contentFrame;
72643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    SandboxFlags m_sandboxFlags;
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // HTMLFrameOwnerElement_h
78