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

Side by Side Diff: components/html_viewer/frame.h

Issue 1246053003: Renames html_viewer frame classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: minor cleanup Created 5 years, 5 months 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
« no previous file with comments | « components/html_viewer/document_resource_waiter.cc ('k') | components/html_viewer/frame.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef COMPONENTS_HTML_VIEWER_FRAME_H_
6 #define COMPONENTS_HTML_VIEWER_FRAME_H_
7
8 #include <vector>
9
10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "components/html_viewer/frame_tree_manager.h"
13 #include "components/view_manager/public/cpp/view_observer.h"
14 #include "mandoline/tab/public/interfaces/frame_tree.mojom.h"
15 #include "third_party/WebKit/public/platform/WebURLRequest.h"
16 #include "third_party/WebKit/public/web/WebFrameClient.h"
17 #include "third_party/WebKit/public/web/WebRemoteFrameClient.h"
18 #include "third_party/WebKit/public/web/WebSandboxFlags.h"
19 #include "third_party/WebKit/public/web/WebViewClient.h"
20
21 namespace blink {
22 class WebFrame;
23 }
24
25 namespace mojo {
26 class Rect;
27 class View;
28 }
29
30 namespace html_viewer {
31
32 class FrameTreeManager;
33 class GeolocationClientImpl;
34 class TouchHandler;
35 class WebLayerImpl;
36 class WebLayerTreeViewImpl;
37
38 // Frame is used to represent a single frame in the frame tree of a page. The
39 // frame is either local or remote. Each Frame is associated with a single
40 // FrameTreeManager and can not be moved to another FrameTreeManager. Local
41 // frames have a mojo::View, remote frames do not.
42 class Frame : public blink::WebFrameClient,
43 public blink::WebViewClient,
44 public blink::WebRemoteFrameClient,
45 public mojo::ViewObserver {
46 public:
47 struct CreateParams {
48 CreateParams(FrameTreeManager* manager, Frame* parent, uint32_t id)
49 : manager(manager), parent(parent), id(id) {}
50 ~CreateParams() {}
51
52 FrameTreeManager* manager;
53 Frame* parent;
54 uint32_t id;
55 };
56
57 explicit Frame(const CreateParams& params);
58
59 void Init(mojo::View* local_view,
60 const blink::WebString& remote_frame_name,
61 const blink::WebString& remote_origin);
62
63 // Closes and deletes this Frame.
64 void Close();
65
66 uint32_t id() const { return id_; }
67
68 // Returns the Frame whose id is |id|.
69 Frame* FindFrame(uint32_t id) {
70 return const_cast<Frame*>(const_cast<const Frame*>(this)->FindFrame(id));
71 }
72 const Frame* FindFrame(uint32_t id) const;
73
74 Frame* parent() { return parent_; }
75
76 const std::vector<Frame*>& children() { return children_; }
77
78 // Returns the WebFrame for this Frame. This is either a WebLocalFrame or
79 // WebRemoteFrame.
80 blink::WebFrame* web_frame() { return web_frame_; }
81
82 // Returns the WebView for this frame, or null if there isn't one. The root
83 // has a WebView, the children WebFrameWidgets.
84 blink::WebView* web_view();
85
86 // The mojo::View this frame renders to. This is non-null for the local frame
87 // the frame tree was created with as well as non-null for any frames created
88 // locally.
89 mojo::View* view() { return view_; }
90
91 private:
92 friend class FrameTreeManager;
93
94 virtual ~Frame();
95
96 // Sets the name of the remote frame. Does nothing if this is a local frame.
97 void SetRemoteFrameName(const mojo::String& name);
98
99 // Returns true if the Frame is local, false if remote.
100 bool IsLocal() const;
101
102 void SetView(mojo::View* view);
103
104 // Creates the appropriate WebWidget implementation for the Frame.
105 void CreateWebWidget();
106
107 void UpdateFocus();
108
109 // Updates the size and scale factor of the webview and related classes from
110 // |root_|.
111 void UpdateWebViewSizeFromViewSize();
112
113 // Swaps this frame from a local frame to remote frame. |request| is the url
114 // to load in the frame.
115 void SwapToRemote(const blink::WebURLRequest& request);
116
117 // See comment in SwapToRemote() for details on this.
118 void FinishSwapToRemote();
119
120 GlobalState* global_state() { return frame_tree_manager_->global_state(); }
121
122 // Returns the Frame associated with the specified WebFrame.
123 Frame* FindFrameWithWebFrame(blink::WebFrame* web_frame);
124
125 // The various frameDetached() implementations call into this.
126 void FrameDetachedImpl(blink::WebFrame* web_frame);
127
128 // mojo::ViewObserver methods:
129 void OnViewBoundsChanged(mojo::View* view,
130 const mojo::Rect& old_bounds,
131 const mojo::Rect& new_bounds) override;
132 void OnViewDestroyed(mojo::View* view) override;
133 void OnViewInputEvent(mojo::View* view, const mojo::EventPtr& event) override;
134 void OnViewFocusChanged(mojo::View* gained_focus,
135 mojo::View* lost_focus) override;
136
137 // WebViewClient methods:
138 virtual void initializeLayerTreeView() override;
139 virtual blink::WebLayerTreeView* layerTreeView() override;
140 virtual blink::WebStorageNamespace* createSessionStorageNamespace();
141
142 // WebFrameClient methods:
143 virtual blink::WebMediaPlayer* createMediaPlayer(
144 blink::WebLocalFrame* frame,
145 const blink::WebURL& url,
146 blink::WebMediaPlayerClient* client,
147 blink::WebMediaPlayerEncryptedMediaClient* encrypted_client,
148 blink::WebContentDecryptionModule* initial_cdm);
149 virtual blink::WebFrame* createChildFrame(
150 blink::WebLocalFrame* parent,
151 blink::WebTreeScopeType scope,
152 const blink::WebString& frame_ame,
153 blink::WebSandboxFlags sandbox_flags);
154 virtual void frameDetached(blink::WebFrame* frame,
155 blink::WebFrameClient::DetachType type);
156 virtual blink::WebCookieJar* cookieJar(blink::WebLocalFrame* frame);
157 virtual blink::WebNavigationPolicy decidePolicyForNavigation(
158 const NavigationPolicyInfo& info);
159 virtual void didAddMessageToConsole(const blink::WebConsoleMessage& message,
160 const blink::WebString& source_name,
161 unsigned source_line,
162 const blink::WebString& stack_trace);
163 virtual void didFinishLoad(blink::WebLocalFrame* frame);
164 virtual void didNavigateWithinPage(blink::WebLocalFrame* frame,
165 const blink::WebHistoryItem& history_item,
166 blink::WebHistoryCommitType commit_type);
167 virtual blink::WebGeolocationClient* geolocationClient();
168 virtual blink::WebEncryptedMediaClient* encryptedMediaClient();
169 virtual void didStartLoading(bool to_different_document);
170 virtual void didStopLoading();
171 virtual void didChangeLoadProgress(double load_progress);
172 virtual void didChangeName(blink::WebLocalFrame* frame,
173 const blink::WebString& name);
174
175 // blink::WebRemoteFrameClient:
176 virtual void frameDetached(blink::WebRemoteFrameClient::DetachType type);
177 virtual void postMessageEvent(blink::WebLocalFrame* source_frame,
178 blink::WebRemoteFrame* target_frame,
179 blink::WebSecurityOrigin target_origin,
180 blink::WebDOMMessageEvent event);
181 virtual void initializeChildFrame(const blink::WebRect& frame_rect,
182 float scale_factor);
183 virtual void navigate(const blink::WebURLRequest& request,
184 bool should_replace_current_entry);
185 virtual void reload(bool ignore_cache, bool is_client_redirect);
186 virtual void forwardInputEvent(const blink::WebInputEvent* event);
187
188 FrameTreeManager* frame_tree_manager_;
189 Frame* parent_;
190 mojo::View* view_;
191 // The id for this frame. If there is a view, this is the same id as the
192 // view has.
193 const uint32_t id_;
194 std::vector<Frame*> children_;
195 blink::WebFrame* web_frame_;
196 blink::WebWidget* web_widget_;
197 scoped_ptr<GeolocationClientImpl> geolocation_client_impl_;
198 scoped_ptr<WebLayerTreeViewImpl> web_layer_tree_view_impl_;
199 scoped_ptr<TouchHandler> touch_handler_;
200
201 // TODO(sky): better factor this, maybe push to View.
202 blink::WebTreeScopeType scope_;
203
204 scoped_ptr<WebLayerImpl> web_layer_;
205
206 base::WeakPtrFactory<Frame> weak_factory_;
207
208 DISALLOW_COPY_AND_ASSIGN(Frame);
209 };
210
211 } // namespace html_viewer
212
213 #endif // COMPONENTS_HTML_VIEWER_FRAME_H_
OLDNEW
« no previous file with comments | « components/html_viewer/document_resource_waiter.cc ('k') | components/html_viewer/frame.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698