1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)/*
2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *                     1999-2001 Lars Knoll <knoll@kde.org>
4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *                     1999-2001 Antti Koivisto <koivisto@kde.org>
5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *                     2000-2001 Simon Hausmann <hausmann@kde.org>
6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *                     2000-2001 Dirk Mueller <mueller@kde.org>
7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *                     2000 Stefan Schimanski <1Stein@gmx.de>
8d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
10d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Copyright (C) 2008 Eric Seidel <eric@webkit.org>
11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *
12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * This library is free software; you can redistribute it and/or
13d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * modify it under the terms of the GNU Library General Public
14d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * License as published by the Free Software Foundation; either
15d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * version 2 of the License, or (at your option) any later version.
16d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *
17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * This library is distributed in the hope that it will be useful,
18d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of
19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Library General Public License for more details.
21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *
22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License
23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * along with this library; see the file COPYING.LIB.  If not, write to
24d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
25d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Boston, MA 02110-1301, USA.
26d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */
27d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
28d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#ifndef LocalFrame_h
29d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define LocalFrame_h
30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/frame/Frame.h"
32d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/loader/FrameLoader.h"
33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/loader/NavigationScheduler.h"
34d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/page/FrameTree.h"
356f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch#include "platform/Supplementable.h"
36a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch#include "platform/heap/Handle.h"
37d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "platform/scroll/ScrollTypes.h"
38c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#include "wtf/HashSet.h"
39d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
40c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
41d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
42d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class Color;
4310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    class Document;
44d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class DragImage;
45d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class Editor;
467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    class Element;
47d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class EventHandler;
48d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class FetchContext;
49d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class FloatSize;
506f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch    class FrameConsole;
51c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    class FrameDestructionObserver;
52d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class FrameSelection;
53d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class FrameView;
54d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class InputMethodController;
55d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class IntPoint;
56d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class IntSize;
57d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class Node;
58d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class Range;
5910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    class RenderView;
60d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class TreeScope;
61d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class ScriptController;
62d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class SpellChecker;
63d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class TreeScope;
64d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    class VisiblePosition;
65d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    class LocalFrame : public Frame, public WillBeHeapSupplementable<LocalFrame>  {
67d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    public:
687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        static PassRefPtrWillBeRawPtr<LocalFrame> create(FrameLoaderClient*, FrameHost*, FrameOwner*);
69d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
70d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        virtual bool isLocalFrame() const OVERRIDE { return true; }
71d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
72d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        void init();
73d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        void setView(PassRefPtr<FrameView>);
74d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        void createView(const IntSize&, const Color&, bool,
75d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)            ScrollbarMode = ScrollbarAuto, bool horizontalLock = false,
76d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)            ScrollbarMode = ScrollbarAuto, bool verticalLock = false);
77d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
78d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        virtual ~LocalFrame();
797242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        virtual void trace(Visitor*) OVERRIDE;
80d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
81c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)        virtual void detach() OVERRIDE;
82c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
83c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)        void addDestructionObserver(FrameDestructionObserver*);
84c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)        void removeDestructionObserver(FrameDestructionObserver*);
85c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
86c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)        void willDetachFrameHost();
87c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)        void detachFromFrameHost();
88d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
8910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch        virtual void disconnectOwnerElement() OVERRIDE;
9010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
9176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)        virtual void setDOMWindow(PassRefPtrWillBeRawPtr<LocalDOMWindow>) OVERRIDE;
92d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        FrameView* view() const;
9310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch        Document* document() const;
947242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        void setPagePopupOwner(Element&);
957242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        Element* pagePopupOwner() const { return m_pagePopupOwner.get(); }
9610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
9710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch        RenderView* contentRenderer() const; // Root of the render tree for the document contained in this frame.
98d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
99d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        Editor& editor() const;
100d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        EventHandler& eventHandler() const;
101d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        FrameLoader& loader() const;
102d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        NavigationScheduler& navigationScheduler() const;
103d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        FrameSelection& selection() const;
104d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        InputMethodController& inputMethodController() const;
105d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        FetchContext& fetchContext() const { return loader().fetchContext(); }
106d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        ScriptController& script();
107d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        SpellChecker& spellChecker() const;
1086f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch        FrameConsole& console() const;
109d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
110d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        void didChangeVisibilityState();
111d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
112f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu        // FIXME: This method is only used by EventHandler to get the highest level
113f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu        // LocalFrame in this frame's in-process subtree. When user gesture tokens
114f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu        // are synchronized across processes this method should be removed.
115f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu        LocalFrame* localFrameRoot();
116f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu
117d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    // ======== All public functions below this point are candidates to move out of LocalFrame into another class. ========
118d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
119d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        bool inScope(TreeScope*) const;
120d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
121d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        void countObjectsNeedingLayout(unsigned& needsLayoutObjects, unsigned& totalObjects, bool& isPartial);
122d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
123d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        // See GraphicsLayerClient.h for accepted flags.
124d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        String layerTreeAsText(unsigned flags = 0) const;
125d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
126d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        void setPrinting(bool printing, const FloatSize& pageSize, const FloatSize& originalPageSize, float maximumShrinkRatio);
127d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        bool shouldUsePrintingLayout() const;
128d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        FloatSize resizePageRectsKeepingRatio(const FloatSize& originalSize, const FloatSize& expectedSize);
129d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
130d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        bool inViewSourceMode() const;
131d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        void setInViewSourceMode(bool = true);
132d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
133d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        void setPageZoomFactor(float factor);
134d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        float pageZoomFactor() const { return m_pageZoomFactor; }
135d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        void setTextZoomFactor(float factor);
136d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        float textZoomFactor() const { return m_textZoomFactor; }
137d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        void setPageAndTextZoomFactors(float pageZoomFactor, float textZoomFactor);
138d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
139d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        void deviceOrPageScaleFactorChanged();
140d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        double devicePixelRatio() const;
141d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
142d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        String documentTypeString() const;
143d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
14407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch        PassOwnPtr<DragImage> nodeImage(Node&);
145d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        PassOwnPtr<DragImage> dragImageForSelection();
146d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
147d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        String selectedText() const;
148d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        String selectedTextForClipboard() const;
149d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
150d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        VisiblePosition visiblePositionForPoint(const IntPoint& framePoint);
151d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        Document* documentAtPoint(const IntPoint& windowPoint);
152a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch        PassRefPtrWillBeRawPtr<Range> rangeForPoint(const IntPoint& framePoint);
153d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
154d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        bool isURLAllowed(const KURL&) const;
1557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        bool shouldReuseDefaultView(const KURL&) const;
1569e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)        void removeSpellingMarkersUnderWords(const Vector<String>& words);
1579e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)
158d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    // ========
159d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
160d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    private:
161f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)        LocalFrame(FrameLoaderClient*, FrameHost*, FrameOwner*);
162d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
163d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        String localLayerTreeAsText(unsigned flags) const;
164d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
1657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        void detachView();
1667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
1677242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        WillBeHeapHashSet<RawPtrWillBeWeakMember<FrameDestructionObserver> > m_destructionObservers;
168d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        mutable FrameLoader m_loader;
169d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        mutable NavigationScheduler m_navigationScheduler;
170d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
171d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        RefPtr<FrameView> m_view;
1727242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        // Usually 0. Non-null if this is the top frame of PagePopup.
1737242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        RefPtrWillBeMember<Element> m_pagePopupOwner;
174d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
175d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        OwnPtr<ScriptController> m_script;
1767242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        const OwnPtrWillBeMember<Editor> m_editor;
1777242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        const OwnPtrWillBeMember<SpellChecker> m_spellChecker;
1787242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        const OwnPtrWillBeMember<FrameSelection> m_selection;
1797242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        const OwnPtrWillBeMember<EventHandler> m_eventHandler;
1807242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        const OwnPtrWillBeMember<FrameConsole> m_console;
1817242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        OwnPtrWillBeMember<InputMethodController> m_inputMethodController;
182d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
183d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        float m_pageZoomFactor;
184d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        float m_textZoomFactor;
185d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
186d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        bool m_inViewSourceMode;
187d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    };
188d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
189d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    inline void LocalFrame::init()
190d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
191d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        m_loader.init();
192d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
193d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
194d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    inline FrameLoader& LocalFrame::loader() const
195d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
196d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        return m_loader;
197d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
198d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
199d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    inline NavigationScheduler& LocalFrame::navigationScheduler() const
200d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
201d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        return m_navigationScheduler;
202d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
203d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
204d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    inline FrameView* LocalFrame::view() const
205d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
206d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        return m_view.get();
207d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
208d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
209d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    inline ScriptController& LocalFrame::script()
210d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
211d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        return *m_script;
212d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
213d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
214d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    inline FrameSelection& LocalFrame::selection() const
215d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
216d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        return *m_selection;
217d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
218d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
219d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    inline Editor& LocalFrame::editor() const
220d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
221d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        return *m_editor;
222d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
223d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
224d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    inline SpellChecker& LocalFrame::spellChecker() const
225d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
226d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        return *m_spellChecker;
227d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
228d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
2296f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch    inline FrameConsole& LocalFrame::console() const
2306f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch    {
2316f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch        return *m_console;
2326f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch    }
2336f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch
234d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    inline InputMethodController& LocalFrame::inputMethodController() const
235d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
236d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        return *m_inputMethodController;
237d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
238d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
239d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    inline bool LocalFrame::inViewSourceMode() const
240d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
241d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        return m_inViewSourceMode;
242d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
243d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
244d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    inline void LocalFrame::setInViewSourceMode(bool mode)
245d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
246d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        m_inViewSourceMode = mode;
247d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
248d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
249d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    inline EventHandler& LocalFrame::eventHandler() const
250d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    {
251d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        ASSERT(m_eventHandler);
252d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)        return *m_eventHandler;
253d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    }
254d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
255d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    DEFINE_TYPE_CASTS(LocalFrame, Frame, localFrame, localFrame->isLocalFrame(), localFrame.isLocalFrame());
256d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
257c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
258d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
25907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch// During refactoring, there are some places where we need to do type conversions that
26007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch// will not be needed once all instances of LocalFrame and RemoteFrame are sorted out.
26107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch// At that time this #define will be removed and all the uses of it will need to be corrected.
26207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch#define toLocalFrameTemporary toLocalFrame
26307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch
264d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#endif // LocalFrame_h
265