OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_HTML_VIEWER_HTML_FRAME_H_ | 5 #ifndef COMPONENTS_HTML_VIEWER_HTML_FRAME_H_ |
6 #define COMPONENTS_HTML_VIEWER_HTML_FRAME_H_ | 6 #define COMPONENTS_HTML_VIEWER_HTML_FRAME_H_ |
7 | 7 |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 } | 26 } |
27 | 27 |
28 namespace blink { | 28 namespace blink { |
29 class WebFrame; | 29 class WebFrame; |
30 class WebWidget; | 30 class WebWidget; |
31 } | 31 } |
32 | 32 |
33 namespace mojo { | 33 namespace mojo { |
34 class ApplicationImpl; | 34 class ApplicationImpl; |
35 class Rect; | 35 class Rect; |
| 36 } |
| 37 |
| 38 namespace mus { |
36 class ScopedViewPtr; | 39 class ScopedViewPtr; |
37 class View; | 40 class View; |
38 } | 41 } |
39 | 42 |
40 namespace html_viewer { | 43 namespace html_viewer { |
41 | 44 |
42 class DevToolsAgentImpl; | 45 class DevToolsAgentImpl; |
43 class GeolocationClientImpl; | 46 class GeolocationClientImpl; |
44 class HTMLFrameDelegate; | 47 class HTMLFrameDelegate; |
45 class HTMLFrameTreeManager; | 48 class HTMLFrameTreeManager; |
46 class HTMLWidget; | 49 class HTMLWidget; |
47 class TouchHandler; | 50 class TouchHandler; |
48 class WebLayerTreeViewImpl; | 51 class WebLayerTreeViewImpl; |
49 | 52 |
50 // Frame is used to represent a single frame in the frame tree of a page. The | 53 // Frame is used to represent a single frame in the frame tree of a page. The |
51 // frame is either local or remote. Each Frame is associated with a single | 54 // frame is either local or remote. Each Frame is associated with a single |
52 // HTMLFrameTreeManager and can not be moved to another HTMLFrameTreeManager. | 55 // HTMLFrameTreeManager and can not be moved to another HTMLFrameTreeManager. |
53 // Local frames have a mojo::View, remote frames do not. | 56 // Local frames have a mus::View, remote frames do not. |
54 // | 57 // |
55 // HTMLFrame serves as the FrameTreeClient. It implements it by forwarding | 58 // HTMLFrame serves as the FrameTreeClient. It implements it by forwarding |
56 // the calls to HTMLFrameTreeManager so that HTMLFrameTreeManager can update | 59 // the calls to HTMLFrameTreeManager so that HTMLFrameTreeManager can update |
57 // the frame tree as appropriate. | 60 // the frame tree as appropriate. |
58 // | 61 // |
59 // Local frames may share the connection (and client implementation) with an | 62 // Local frames may share the connection (and client implementation) with an |
60 // ancestor. This happens when a child frame is created. Once a navigate | 63 // ancestor. This happens when a child frame is created. Once a navigate |
61 // happens the frame is swapped to a remote frame. | 64 // happens the frame is swapped to a remote frame. |
62 // | 65 // |
63 // Remote frames may become local again if the embed happens in the same | 66 // Remote frames may become local again if the embed happens in the same |
64 // process. See HTMLFrameTreeManager for details. | 67 // process. See HTMLFrameTreeManager for details. |
65 class HTMLFrame : public blink::WebFrameClient, | 68 class HTMLFrame : public blink::WebFrameClient, |
66 public blink::WebRemoteFrameClient, | 69 public blink::WebRemoteFrameClient, |
67 public web_view::FrameTreeClient, | 70 public web_view::FrameTreeClient, |
68 public mojo::ViewObserver { | 71 public mus::ViewObserver { |
69 public: | 72 public: |
70 struct CreateParams { | 73 struct CreateParams { |
71 CreateParams( | 74 CreateParams( |
72 HTMLFrameTreeManager* manager, | 75 HTMLFrameTreeManager* manager, |
73 HTMLFrame* parent, | 76 HTMLFrame* parent, |
74 uint32_t id, | 77 uint32_t id, |
75 mojo::View* view, | 78 mus::View* view, |
76 const mojo::Map<mojo::String, mojo::Array<uint8_t>>& properties, | 79 const mojo::Map<mojo::String, mojo::Array<uint8_t>>& properties, |
77 HTMLFrameDelegate* delegate) | 80 HTMLFrameDelegate* delegate) |
78 : manager(manager), | 81 : manager(manager), |
79 parent(parent), | 82 parent(parent), |
80 id(id), | 83 id(id), |
81 view(view), | 84 view(view), |
82 properties(properties), | 85 properties(properties), |
83 delegate(delegate), | 86 delegate(delegate), |
84 allow_local_shared_frame(false) {} | 87 allow_local_shared_frame(false) {} |
85 ~CreateParams() {} | 88 ~CreateParams() {} |
86 | 89 |
87 HTMLFrameTreeManager* manager; | 90 HTMLFrameTreeManager* manager; |
88 HTMLFrame* parent; | 91 HTMLFrame* parent; |
89 uint32_t id; | 92 uint32_t id; |
90 mojo::View* view; | 93 mus::View* view; |
91 const mojo::Map<mojo::String, mojo::Array<uint8_t>>& properties; | 94 const mojo::Map<mojo::String, mojo::Array<uint8_t>>& properties; |
92 HTMLFrameDelegate* delegate; | 95 HTMLFrameDelegate* delegate; |
93 | 96 |
94 private: | 97 private: |
95 friend class HTMLFrame; | 98 friend class HTMLFrame; |
96 | 99 |
97 // TODO(sky): nuke. | 100 // TODO(sky): nuke. |
98 bool allow_local_shared_frame; | 101 bool allow_local_shared_frame; |
99 }; | 102 }; |
100 | 103 |
(...skipping 17 matching lines...) Expand all Loading... |
118 | 121 |
119 // Returns the WebFrame for this Frame. This is either a WebLocalFrame or | 122 // Returns the WebFrame for this Frame. This is either a WebLocalFrame or |
120 // WebRemoteFrame. | 123 // WebRemoteFrame. |
121 blink::WebFrame* web_frame() { return web_frame_; } | 124 blink::WebFrame* web_frame() { return web_frame_; } |
122 | 125 |
123 // Returns the WebView for this frame, or null if there isn't one. The root | 126 // Returns the WebView for this frame, or null if there isn't one. The root |
124 // has a WebView, the children WebFrameWidgets. | 127 // has a WebView, the children WebFrameWidgets. |
125 blink::WebView* web_view(); | 128 blink::WebView* web_view(); |
126 blink::WebWidget* GetWebWidget(); | 129 blink::WebWidget* GetWebWidget(); |
127 | 130 |
128 // The mojo::View this frame renders to. This is non-null for the local frame | 131 // The mus::View this frame renders to. This is non-null for the local frame |
129 // the frame tree was created with as well as non-null for any frames created | 132 // the frame tree was created with as well as non-null for any frames created |
130 // locally. | 133 // locally. |
131 mojo::View* view() { return view_; } | 134 mus::View* view() { return view_; } |
132 | 135 |
133 HTMLFrameTreeManager* frame_tree_manager() { return frame_tree_manager_; } | 136 HTMLFrameTreeManager* frame_tree_manager() { return frame_tree_manager_; } |
134 | 137 |
135 // Returns null if the browser side didn't request to setup an agent in this | 138 // Returns null if the browser side didn't request to setup an agent in this |
136 // frame. | 139 // frame. |
137 DevToolsAgentImpl* devtools_agent() { return devtools_agent_.get(); } | 140 DevToolsAgentImpl* devtools_agent() { return devtools_agent_.get(); } |
138 | 141 |
139 // Returns true if the Frame is local, false if remote. | 142 // Returns true if the Frame is local, false if remote. |
140 bool IsLocal() const; | 143 bool IsLocal() const; |
141 | 144 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 // The local root is the first ancestor (starting at this) that has its own | 207 // The local root is the first ancestor (starting at this) that has its own |
205 // connection. | 208 // connection. |
206 HTMLFrame* GetLocalRoot(); | 209 HTMLFrame* GetLocalRoot(); |
207 | 210 |
208 // Returns the ApplicationImpl from the local root's delegate. | 211 // Returns the ApplicationImpl from the local root's delegate. |
209 mojo::ApplicationImpl* GetLocalRootApp(); | 212 mojo::ApplicationImpl* GetLocalRootApp(); |
210 | 213 |
211 // Gets the FrameTreeServer to use for this frame. | 214 // Gets the FrameTreeServer to use for this frame. |
212 web_view::FrameTreeServer* GetFrameTreeServer(); | 215 web_view::FrameTreeServer* GetFrameTreeServer(); |
213 | 216 |
214 void SetView(mojo::View* view); | 217 void SetView(mus::View* view); |
215 | 218 |
216 // Creates the appropriate WebWidget implementation for the Frame. | 219 // Creates the appropriate WebWidget implementation for the Frame. |
217 void CreateRootWebWidget(); | 220 void CreateRootWebWidget(); |
218 void CreateLocalRootWebWidget(blink::WebLocalFrame* local_frame); | 221 void CreateLocalRootWebWidget(blink::WebLocalFrame* local_frame); |
219 | 222 |
220 void UpdateFocus(); | 223 void UpdateFocus(); |
221 | 224 |
222 // Swaps this frame from a local frame to remote frame. |request| is the url | 225 // Swaps this frame from a local frame to remote frame. |request| is the url |
223 // to load in the frame. | 226 // to load in the frame. |
224 void SwapToRemote(); | 227 void SwapToRemote(); |
225 | 228 |
226 // Swaps this frame from a remote frame to a local frame. | 229 // Swaps this frame from a remote frame to a local frame. |
227 void SwapToLocal( | 230 void SwapToLocal( |
228 HTMLFrameDelegate* delegate, | 231 HTMLFrameDelegate* delegate, |
229 mojo::View* view, | 232 mus::View* view, |
230 const mojo::Map<mojo::String, mojo::Array<uint8_t>>& properties); | 233 const mojo::Map<mojo::String, mojo::Array<uint8_t>>& properties); |
231 | 234 |
232 // Invoked when changing the delegate. This informs the new delegate to take | 235 // Invoked when changing the delegate. This informs the new delegate to take |
233 // over. This is used when a different connection is going to take over | 236 // over. This is used when a different connection is going to take over |
234 // responsibility for the frame. | 237 // responsibility for the frame. |
235 void SwapDelegate(HTMLFrameDelegate* delegate); | 238 void SwapDelegate(HTMLFrameDelegate* delegate); |
236 | 239 |
237 GlobalState* global_state() { return frame_tree_manager_->global_state(); } | 240 GlobalState* global_state() { return frame_tree_manager_->global_state(); } |
238 | 241 |
239 // Returns the Frame associated with the specified WebFrame. | 242 // Returns the Frame associated with the specified WebFrame. |
240 HTMLFrame* FindFrameWithWebFrame(blink::WebFrame* web_frame); | 243 HTMLFrame* FindFrameWithWebFrame(blink::WebFrame* web_frame); |
241 | 244 |
242 // The various frameDetached() implementations call into this. | 245 // The various frameDetached() implementations call into this. |
243 void FrameDetachedImpl(blink::WebFrame* web_frame); | 246 void FrameDetachedImpl(blink::WebFrame* web_frame); |
244 | 247 |
245 // mojo::ViewObserver methods: | 248 // mus::ViewObserver methods: |
246 void OnViewBoundsChanged(mojo::View* view, | 249 void OnViewBoundsChanged(mus::View* view, |
247 const mojo::Rect& old_bounds, | 250 const mojo::Rect& old_bounds, |
248 const mojo::Rect& new_bounds) override; | 251 const mojo::Rect& new_bounds) override; |
249 void OnViewDestroyed(mojo::View* view) override; | 252 void OnViewDestroyed(mus::View* view) override; |
250 void OnViewInputEvent(mojo::View* view, const mojo::EventPtr& event) override; | 253 void OnViewInputEvent(mus::View* view, const mojo::EventPtr& event) override; |
251 void OnViewFocusChanged(mojo::View* gained_focus, | 254 void OnViewFocusChanged(mus::View* gained_focus, |
252 mojo::View* lost_focus) override; | 255 mus::View* lost_focus) override; |
253 | 256 |
254 // web_view::FrameTreeClient: | 257 // web_view::FrameTreeClient: |
255 void OnConnect(web_view::FrameTreeServerPtr server, | 258 void OnConnect(web_view::FrameTreeServerPtr server, |
256 uint32_t change_id, | 259 uint32_t change_id, |
257 uint32_t view_id, | 260 uint32_t view_id, |
258 web_view::ViewConnectType view_connect_type, | 261 web_view::ViewConnectType view_connect_type, |
259 mojo::Array<web_view::FrameDataPtr> frame_data, | 262 mojo::Array<web_view::FrameDataPtr> frame_data, |
260 const OnConnectCallback& callback) override; | 263 const OnConnectCallback& callback) override; |
261 void OnFrameAdded(uint32_t change_id, | 264 void OnFrameAdded(uint32_t change_id, |
262 web_view::FrameDataPtr frame_data) override; | 265 web_view::FrameDataPtr frame_data) override; |
(...skipping 17 matching lines...) Expand all Loading... |
280 float scale_factor); | 283 float scale_factor); |
281 virtual void navigate(const blink::WebURLRequest& request, | 284 virtual void navigate(const blink::WebURLRequest& request, |
282 bool should_replace_current_entry); | 285 bool should_replace_current_entry); |
283 virtual void reload(bool ignore_cache, bool is_client_redirect); | 286 virtual void reload(bool ignore_cache, bool is_client_redirect); |
284 virtual void forwardInputEvent(const blink::WebInputEvent* event); | 287 virtual void forwardInputEvent(const blink::WebInputEvent* event); |
285 | 288 |
286 HTMLFrameTreeManager* frame_tree_manager_; | 289 HTMLFrameTreeManager* frame_tree_manager_; |
287 HTMLFrame* parent_; | 290 HTMLFrame* parent_; |
288 // |view_| is non-null for local frames or remote frames that were once | 291 // |view_| is non-null for local frames or remote frames that were once |
289 // local. | 292 // local. |
290 mojo::View* view_; | 293 mus::View* view_; |
291 // The id for this frame. If there is a view, this is the same id as the | 294 // The id for this frame. If there is a view, this is the same id as the |
292 // view has. | 295 // view has. |
293 const uint32_t id_; | 296 const uint32_t id_; |
294 std::vector<HTMLFrame*> children_; | 297 std::vector<HTMLFrame*> children_; |
295 blink::WebFrame* web_frame_; | 298 blink::WebFrame* web_frame_; |
296 scoped_ptr<HTMLWidget> html_widget_; | 299 scoped_ptr<HTMLWidget> html_widget_; |
297 scoped_ptr<GeolocationClientImpl> geolocation_client_impl_; | 300 scoped_ptr<GeolocationClientImpl> geolocation_client_impl_; |
298 scoped_ptr<TouchHandler> touch_handler_; | 301 scoped_ptr<TouchHandler> touch_handler_; |
299 | 302 |
300 scoped_ptr<cc_blink::WebLayerImpl> web_layer_; | 303 scoped_ptr<cc_blink::WebLayerImpl> web_layer_; |
301 | 304 |
302 HTMLFrameDelegate* delegate_; | 305 HTMLFrameDelegate* delegate_; |
303 scoped_ptr<mojo::Binding<web_view::FrameTreeClient>> | 306 scoped_ptr<mojo::Binding<web_view::FrameTreeClient>> |
304 frame_tree_client_binding_; | 307 frame_tree_client_binding_; |
305 web_view::FrameTreeServerPtr server_; | 308 web_view::FrameTreeServerPtr server_; |
306 | 309 |
307 ReplicatedFrameState state_; | 310 ReplicatedFrameState state_; |
308 | 311 |
309 // If this frame is the result of creating a local frame | 312 // If this frame is the result of creating a local frame |
310 // (createChildFrame()), then |owned_view_| is the View initially created | 313 // (createChildFrame()), then |owned_view_| is the View initially created |
311 // for the frame. While the frame is local |owned_view_| is the same as | 314 // for the frame. While the frame is local |owned_view_| is the same as |
312 // |view_|. If this frame becomes remote |view_| is set to null and | 315 // |view_|. If this frame becomes remote |view_| is set to null and |
313 // |owned_view_| remains as the View initially created for the frame. | 316 // |owned_view_| remains as the View initially created for the frame. |
314 // | 317 // |
315 // This is done to ensure the View isn't prematurely deleted (it must exist | 318 // This is done to ensure the View isn't prematurely deleted (it must exist |
316 // as long as the frame is valid). If the View was deleted as soon as the | 319 // as long as the frame is valid). If the View was deleted as soon as the |
317 // frame was swapped to remote then the process rendering to the view would | 320 // frame was swapped to remote then the process rendering to the view would |
318 // be severed. | 321 // be severed. |
319 scoped_ptr<mojo::ScopedViewPtr> owned_view_; | 322 scoped_ptr<mus::ScopedViewPtr> owned_view_; |
320 | 323 |
321 // This object is only valid in the context of performance tests. | 324 // This object is only valid in the context of performance tests. |
322 tracing::StartupPerformanceDataCollectorPtr | 325 tracing::StartupPerformanceDataCollectorPtr |
323 startup_performance_data_collector_; | 326 startup_performance_data_collector_; |
324 | 327 |
325 scoped_ptr<DevToolsAgentImpl> devtools_agent_; | 328 scoped_ptr<DevToolsAgentImpl> devtools_agent_; |
326 | 329 |
327 base::WeakPtrFactory<HTMLFrame> weak_factory_; | 330 base::WeakPtrFactory<HTMLFrame> weak_factory_; |
328 | 331 |
329 DISALLOW_COPY_AND_ASSIGN(HTMLFrame); | 332 DISALLOW_COPY_AND_ASSIGN(HTMLFrame); |
330 }; | 333 }; |
331 | 334 |
332 } // namespace html_viewer | 335 } // namespace html_viewer |
333 | 336 |
334 #endif // COMPONENTS_HTML_VIEWER_HTML_FRAME_H_ | 337 #endif // COMPONENTS_HTML_VIEWER_HTML_FRAME_H_ |
OLD | NEW |