Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: Source/core/frame/Frame.h

Issue 115293005: Add a layer of indirection between Frame and Page (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999-2001 Lars Knoll <knoll@kde.org> 3 * 1999-2001 Lars Knoll <knoll@kde.org>
4 * 1999-2001 Antti Koivisto <koivisto@kde.org> 4 * 1999-2001 Antti Koivisto <koivisto@kde.org>
5 * 2000-2001 Simon Hausmann <hausmann@kde.org> 5 * 2000-2001 Simon Hausmann <hausmann@kde.org>
6 * 2000-2001 Dirk Mueller <mueller@kde.org> 6 * 2000-2001 Dirk Mueller <mueller@kde.org>
7 * 2000 Stefan Schimanski <1Stein@gmx.de> 7 * 2000 Stefan Schimanski <1Stein@gmx.de>
8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. 8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
9 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 9 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
10 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> 10 * Copyright (C) 2008 Eric Seidel <eric@webkit.org>
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 class Color; 48 class Color;
49 class DOMWindow; 49 class DOMWindow;
50 class Document; 50 class Document;
51 class DragImage; 51 class DragImage;
52 class Editor; 52 class Editor;
53 class Element; 53 class Element;
54 class EventHandler; 54 class EventHandler;
55 class FetchContext; 55 class FetchContext;
56 class FloatSize; 56 class FloatSize;
57 class FrameDestructionObserver; 57 class FrameDestructionObserver;
58 class FrameHost;
58 class FrameSelection; 59 class FrameSelection;
59 class FrameView; 60 class FrameView;
60 class HTMLFrameOwnerElement; 61 class HTMLFrameOwnerElement;
61 class HTMLTableCellElement; 62 class HTMLTableCellElement;
62 class InputMethodController; 63 class InputMethodController;
63 class IntPoint; 64 class IntPoint;
64 class Node; 65 class Node;
66 class Page;
65 class Range; 67 class Range;
66 class RenderPart; 68 class RenderPart;
67 class RenderView; 69 class RenderView;
68 class TreeScope; 70 class TreeScope;
69 class ScriptController; 71 class ScriptController;
70 class Settings; 72 class Settings;
71 class SpellChecker; 73 class SpellChecker;
72 class TreeScope; 74 class TreeScope;
73 class VisiblePosition; 75 class VisiblePosition;
74 class Widget; 76 class Widget;
75 77
76 class FrameInit : public RefCounted<FrameInit> { 78 class FrameInit : public RefCounted<FrameInit> {
77 public: 79 public:
78 // For creating a dummy Frame 80 // For creating a dummy Frame
79 static PassRefPtr<FrameInit> create(int64_t frameID, Page* page, FrameLo aderClient* client) 81 static PassRefPtr<FrameInit> create(int64_t frameID, FrameHost* host, Fr ameLoaderClient* client)
80 { 82 {
81 return adoptRef(new FrameInit(frameID, page, client)); 83 return adoptRef(new FrameInit(frameID, host, client));
82 } 84 }
83 85
86 int64_t frameID() const { return m_frameID; }
87
88 void setFrameHost(FrameHost* host) { m_frameHost = host; }
89 FrameHost* frameHost() const { return m_frameHost; }
90
84 void setFrameLoaderClient(FrameLoaderClient* client) { m_client = client ; } 91 void setFrameLoaderClient(FrameLoaderClient* client) { m_client = client ; }
85 FrameLoaderClient* frameLoaderClient() const { return m_client; } 92 FrameLoaderClient* frameLoaderClient() const { return m_client; }
86 93
87 int64_t frameID() const { return m_frameID; }
88
89 void setPage(Page* page) { m_page = page; }
90 Page* page() const { return m_page; }
91
92 void setOwnerElement(HTMLFrameOwnerElement* ownerElement) { m_ownerEleme nt = ownerElement; } 94 void setOwnerElement(HTMLFrameOwnerElement* ownerElement) { m_ownerEleme nt = ownerElement; }
93 HTMLFrameOwnerElement* ownerElement() const { return m_ownerElement; } 95 HTMLFrameOwnerElement* ownerElement() const { return m_ownerElement; }
94 96
95 protected: 97 protected:
96 FrameInit(int64_t frameID, Page* page = 0, FrameLoaderClient* client = 0 ) 98 FrameInit(int64_t frameID, FrameHost* host = 0, FrameLoaderClient* clien t = 0)
97 : m_frameID(frameID) 99 : m_frameID(frameID)
98 , m_client(client) 100 , m_client(client)
99 , m_page(page) 101 , m_frameHost(host)
100 , m_ownerElement(0) 102 , m_ownerElement(0)
101 { 103 {
102 } 104 }
103 105
104 private: 106 private:
105 int64_t m_frameID; 107 int64_t m_frameID;
106 FrameLoaderClient* m_client; 108 FrameLoaderClient* m_client;
107 Page* m_page; 109 FrameHost* m_frameHost;
108 HTMLFrameOwnerElement* m_ownerElement; 110 HTMLFrameOwnerElement* m_ownerElement;
109 }; 111 };
110 112
111 class Frame : public RefCounted<Frame> { 113 class Frame : public RefCounted<Frame> {
112 public: 114 public:
113 static PassRefPtr<Frame> create(PassRefPtr<FrameInit>); 115 static PassRefPtr<Frame> create(PassRefPtr<FrameInit>);
114 116
115 void init(); 117 void init();
116 void setView(PassRefPtr<FrameView>); 118 void setView(PassRefPtr<FrameView>);
117 void createView(const IntSize&, const Color&, bool, 119 void createView(const IntSize&, const Color&, bool,
118 ScrollbarMode = ScrollbarAuto, bool horizontalLock = false, 120 ScrollbarMode = ScrollbarAuto, bool horizontalLock = false,
119 ScrollbarMode = ScrollbarAuto, bool verticalLock = false); 121 ScrollbarMode = ScrollbarAuto, bool verticalLock = false);
120 122
121 ~Frame(); 123 ~Frame();
122 124
123 void addDestructionObserver(FrameDestructionObserver*); 125 void addDestructionObserver(FrameDestructionObserver*);
124 void removeDestructionObserver(FrameDestructionObserver*); 126 void removeDestructionObserver(FrameDestructionObserver*);
125 127
126 void willDetachPage(); 128 void willDetachFrameHost();
127 void detachFromPage(); 129 void detachFromFrameHost();
128 void disconnectOwnerElement(); 130 void disconnectOwnerElement();
129 131
132 // NOTE: Page is moving out of Blink up into the browser process as
133 // part of the site-isolation (out of process iframes) work.
134 // FrameHost should be used in stead where possible.
130 Page* page() const; 135 Page* page() const;
136 FrameHost* host() const; // Null when the frame is detached.
137
131 HTMLFrameOwnerElement* ownerElement() const; 138 HTMLFrameOwnerElement* ownerElement() const;
132 bool isMainFrame() const; 139 bool isMainFrame() const;
133 140
134 void setDOMWindow(PassRefPtr<DOMWindow>); 141 void setDOMWindow(PassRefPtr<DOMWindow>);
135 DOMWindow* domWindow() const; 142 DOMWindow* domWindow() const;
136 Document* document() const; 143 Document* document() const;
137 FrameView* view() const; 144 FrameView* view() const;
138 145
139 ChromeClient& chromeClient() const; 146 ChromeClient& chromeClient() const;
140 Editor& editor() const; 147 Editor& editor() const;
141 EventHandler& eventHandler() const; 148 EventHandler& eventHandler() const;
142 FrameLoader& loader() const; 149 FrameLoader& loader() const;
143 NavigationScheduler& navigationScheduler() const; 150 NavigationScheduler& navigationScheduler() const;
144 FrameSelection& selection() const; 151 FrameSelection& selection() const;
145 FrameTree& tree() const; 152 FrameTree& tree() const;
146 AnimationController& animation() const; 153 AnimationController& animation() const;
147 InputMethodController& inputMethodController() const; 154 InputMethodController& inputMethodController() const;
148 FetchContext& fetchContext() const { return loader().fetchContext(); } 155 FetchContext& fetchContext() const { return loader().fetchContext(); }
149 ScriptController& script(); 156 ScriptController& script();
150 SpellChecker& spellChecker() const; 157 SpellChecker& spellChecker() const;
151 158
152 RenderView* contentRenderer() const; // Root of the render tree for the document contained in this frame. 159 RenderView* contentRenderer() const; // Root of the render tree for the document contained in this frame.
153 RenderPart* ownerRenderer() const; // Renderer for the element that cont ains this frame. 160 RenderPart* ownerRenderer() const; // Renderer for the element that cont ains this frame.
154 161
155 void dispatchVisibilityStateChangeEvent(); 162 void dispatchVisibilityStateChangeEvent();
156 163
157 int64_t frameID() const { return m_frameInit->frameID(); } 164 int64_t frameID() const { return m_frameInit->frameID(); }
158 165
166 // FIXME: These should move to RemoteFrame once that exists.
167 // RemotePlatformLayer is only ever set for Frames which exist in anothe r process.
159 void setRemotePlatformLayer(blink::WebLayer* remotePlatformLayer) { m_re motePlatformLayer = remotePlatformLayer; } 168 void setRemotePlatformLayer(blink::WebLayer* remotePlatformLayer) { m_re motePlatformLayer = remotePlatformLayer; }
160 blink::WebLayer* remotePlatformLayer() const { return m_remotePlatformLa yer; } 169 blink::WebLayer* remotePlatformLayer() const { return m_remotePlatformLa yer; }
161 170
162 // ======== All public functions below this point are candidates to move out of Frame into another class. ======== 171 // ======== All public functions below this point are candidates to move out of Frame into another class. ========
163 172
164 bool inScope(TreeScope*) const; 173 bool inScope(TreeScope*) const;
165 174
166 // See GraphicsLayerClient.h for accepted flags. 175 // See GraphicsLayerClient.h for accepted flags.
167 String layerTreeAsText(unsigned flags = 0) const; 176 String layerTreeAsText(unsigned flags = 0) const;
168 String trackedRepaintRectsAsText() const; 177 String trackedRepaintRectsAsText() const;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 219
211 bool isURLAllowed(const KURL&) const; 220 bool isURLAllowed(const KURL&) const;
212 221
213 // ======== 222 // ========
214 223
215 private: 224 private:
216 Frame(PassRefPtr<FrameInit>); 225 Frame(PassRefPtr<FrameInit>);
217 226
218 HashSet<FrameDestructionObserver*> m_destructionObservers; 227 HashSet<FrameDestructionObserver*> m_destructionObservers;
219 228
220 Page* m_page; 229 FrameHost* m_host;
221 mutable FrameTree m_treeNode; 230 mutable FrameTree m_treeNode;
222 mutable FrameLoader m_loader; 231 mutable FrameLoader m_loader;
223 mutable NavigationScheduler m_navigationScheduler; 232 mutable NavigationScheduler m_navigationScheduler;
224 233
225 RefPtr<FrameView> m_view; 234 RefPtr<FrameView> m_view;
226 RefPtr<DOMWindow> m_domWindow; 235 RefPtr<DOMWindow> m_domWindow;
227 236
228 OwnPtr<ScriptController> m_script; 237 OwnPtr<ScriptController> m_script;
229 const OwnPtr<Editor> m_editor; 238 const OwnPtr<Editor> m_editor;
230 const OwnPtr<SpellChecker> m_spellChecker; 239 const OwnPtr<SpellChecker> m_spellChecker;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 inline void Frame::setInViewSourceMode(bool mode) 324 inline void Frame::setInViewSourceMode(bool mode)
316 { 325 {
317 m_inViewSourceMode = mode; 326 m_inViewSourceMode = mode;
318 } 327 }
319 328
320 inline FrameTree& Frame::tree() const 329 inline FrameTree& Frame::tree() const
321 { 330 {
322 return m_treeNode; 331 return m_treeNode;
323 } 332 }
324 333
325 inline Page* Frame::page() const
326 {
327 return m_page;
328 }
329
330 inline EventHandler& Frame::eventHandler() const 334 inline EventHandler& Frame::eventHandler() const
331 { 335 {
332 ASSERT(m_eventHandler); 336 ASSERT(m_eventHandler);
333 return *m_eventHandler; 337 return *m_eventHandler;
334 } 338 }
335 339
336 } // namespace WebCore 340 } // namespace WebCore
337 341
338 #endif // Frame_h 342 #endif // Frame_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698