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

Side by Side Diff: components/html_viewer/html_frame_tree_manager.cc

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
OLDNEW
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 #include "components/html_viewer/frame_tree_manager.h" 5 #include "components/html_viewer/html_frame_tree_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "components/html_viewer/blink_basic_type_converters.h" 11 #include "components/html_viewer/blink_basic_type_converters.h"
12 #include "components/html_viewer/blink_url_request_type_converters.h" 12 #include "components/html_viewer/blink_url_request_type_converters.h"
13 #include "components/html_viewer/frame.h"
14 #include "components/html_viewer/frame_tree_manager_delegate.h"
15 #include "components/html_viewer/global_state.h" 13 #include "components/html_viewer/global_state.h"
14 #include "components/html_viewer/html_frame.h"
15 #include "components/html_viewer/html_frame_tree_manager_delegate.h"
16 #include "components/view_manager/public/cpp/view_manager.h" 16 #include "components/view_manager/public/cpp/view_manager.h"
17 #include "mojo/application/public/cpp/application_connection.h" 17 #include "mojo/application/public/cpp/application_connection.h"
18 #include "mojo/application/public/cpp/application_impl.h" 18 #include "mojo/application/public/cpp/application_impl.h"
19 #include "third_party/WebKit/public/web/WebLocalFrame.h" 19 #include "third_party/WebKit/public/web/WebLocalFrame.h"
20 #include "third_party/WebKit/public/web/WebRemoteFrame.h" 20 #include "third_party/WebKit/public/web/WebRemoteFrame.h"
21 #include "third_party/WebKit/public/web/WebTreeScopeType.h" 21 #include "third_party/WebKit/public/web/WebTreeScopeType.h"
22 #include "third_party/WebKit/public/web/WebView.h" 22 #include "third_party/WebKit/public/web/WebView.h"
23 #include "ui/gfx/geometry/dip_util.h" 23 #include "ui/gfx/geometry/dip_util.h"
24 #include "ui/gfx/geometry/size.h" 24 #include "ui/gfx/geometry/size.h"
25 25
(...skipping 22 matching lines...) Expand all
48 // can go ahead and navigate locally. 48 // can go ahead and navigate locally.
49 if (request.extraData()) 49 if (request.extraData())
50 return true; 50 return true;
51 51
52 // Otherwise we don't know if we're the right app to handle this request. Ask 52 // Otherwise we don't know if we're the right app to handle this request. Ask
53 // host to do the navigation for us. 53 // host to do the navigation for us.
54 return false; 54 return false;
55 } 55 }
56 56
57 // Creates a Frame per FrameData element in |frame_data|. 57 // Creates a Frame per FrameData element in |frame_data|.
58 Frame* BuildFrameTree(FrameTreeManager* frame_tree_manager, 58 HTMLFrame* BuildFrameTree(
59 const mojo::Array<mandoline::FrameDataPtr>& frame_data, 59 HTMLFrameTreeManager* frame_tree_manager,
60 uint32_t local_frame_id, 60 const mojo::Array<mandoline::FrameDataPtr>& frame_data,
61 mojo::View* local_view) { 61 uint32_t local_frame_id,
62 std::vector<Frame*> parents; 62 mojo::View* local_view) {
63 Frame* root = nullptr; 63 std::vector<HTMLFrame*> parents;
64 Frame* last_frame = nullptr; 64 HTMLFrame* root = nullptr;
65 HTMLFrame* last_frame = nullptr;
65 for (size_t i = 0; i < frame_data.size(); ++i) { 66 for (size_t i = 0; i < frame_data.size(); ++i) {
66 if (last_frame && frame_data[i]->parent_id == last_frame->id()) { 67 if (last_frame && frame_data[i]->parent_id == last_frame->id()) {
67 parents.push_back(last_frame); 68 parents.push_back(last_frame);
68 } else if (!parents.empty()) { 69 } else if (!parents.empty()) {
69 while (parents.back()->id() != frame_data[i]->parent_id) 70 while (parents.back()->id() != frame_data[i]->parent_id)
70 parents.pop_back(); 71 parents.pop_back();
71 } 72 }
72 Frame::CreateParams params(frame_tree_manager, 73 HTMLFrame::CreateParams params(frame_tree_manager,
73 !parents.empty() ? parents.back() : nullptr, 74 !parents.empty() ? parents.back() : nullptr,
74 frame_data[i]->frame_id); 75 frame_data[i]->frame_id);
75 Frame* frame = new Frame(params); 76 HTMLFrame* frame = new HTMLFrame(params);
76 if (!last_frame) 77 if (!last_frame)
77 root = frame; 78 root = frame;
78 else 79 else
79 DCHECK(frame->parent()); 80 DCHECK(frame->parent());
80 last_frame = frame; 81 last_frame = frame;
81 82
82 frame->Init(local_view, frame_data[i]->name.To<blink::WebString>(), 83 frame->Init(local_view, frame_data[i]->name.To<blink::WebString>(),
83 frame_data[i]->origin.To<blink::WebString>()); 84 frame_data[i]->origin.To<blink::WebString>());
84 } 85 }
85 return root; 86 return root;
86 } 87 }
87 88
88 } // namespace 89 } // namespace
89 90
90 FrameTreeManager::FrameTreeManager(GlobalState* global_state, 91 HTMLFrameTreeManager::HTMLFrameTreeManager(
91 mojo::ApplicationImpl* app, 92 GlobalState* global_state,
92 mojo::ApplicationConnection* app_connection, 93 mojo::ApplicationImpl* app,
93 uint32_t local_frame_id, 94 mojo::ApplicationConnection* app_connection,
94 mandoline::FrameTreeServerPtr server) 95 uint32_t local_frame_id,
96 mandoline::FrameTreeServerPtr server)
95 : global_state_(global_state), 97 : global_state_(global_state),
96 app_(app), 98 app_(app),
97 delegate_(nullptr), 99 delegate_(nullptr),
98 local_frame_id_(local_frame_id), 100 local_frame_id_(local_frame_id),
99 server_(server.Pass()), 101 server_(server.Pass()),
100 navigator_host_(app_connection->GetServiceProvider()), 102 navigator_host_(app_connection->GetServiceProvider()),
101 root_(nullptr) { 103 root_(nullptr) {}
102 }
103 104
104 FrameTreeManager::~FrameTreeManager() { 105 HTMLFrameTreeManager::~HTMLFrameTreeManager() {
105 if (root_) 106 if (root_)
106 root_->Close(); // This should call back to OnFrameDestroyed(). 107 root_->Close(); // This should call back to OnFrameDestroyed().
107 DCHECK(!root_); 108 DCHECK(!root_);
108 } 109 }
109 110
110 void FrameTreeManager::Init(mojo::View* local_view, 111 void HTMLFrameTreeManager::Init(
111 mojo::Array<mandoline::FrameDataPtr> frame_data) { 112 mojo::View* local_view,
113 mojo::Array<mandoline::FrameDataPtr> frame_data) {
112 root_ = BuildFrameTree(this, frame_data, local_frame_id_, local_view); 114 root_ = BuildFrameTree(this, frame_data, local_frame_id_, local_view);
113 Frame* local_frame = root_->FindFrame(local_frame_id_); 115 HTMLFrame* local_frame = root_->FindFrame(local_frame_id_);
114 CHECK(local_frame); 116 CHECK(local_frame);
115 local_frame->UpdateFocus(); 117 local_frame->UpdateFocus();
116 } 118 }
117 119
118 Frame* FrameTreeManager::GetLocalFrame() { 120 HTMLFrame* HTMLFrameTreeManager::GetLocalFrame() {
119 return root_->FindFrame(local_frame_id_); 121 return root_->FindFrame(local_frame_id_);
120 } 122 }
121 123
122 blink::WebLocalFrame* FrameTreeManager::GetLocalWebFrame() { 124 blink::WebLocalFrame* HTMLFrameTreeManager::GetLocalWebFrame() {
123 return GetLocalFrame()->web_frame()->toWebLocalFrame(); 125 return GetLocalFrame()->web_frame()->toWebLocalFrame();
124 } 126 }
125 127
126 blink::WebView* FrameTreeManager::GetWebView() { 128 blink::WebView* HTMLFrameTreeManager::GetWebView() {
127 return root_->web_view(); 129 return root_->web_view();
128 } 130 }
129 131
130 blink::WebNavigationPolicy FrameTreeManager::DecidePolicyForNavigation( 132 blink::WebNavigationPolicy HTMLFrameTreeManager::DecidePolicyForNavigation(
131 Frame* frame, 133 HTMLFrame* frame,
132 const blink::WebFrameClient::NavigationPolicyInfo& info) { 134 const blink::WebFrameClient::NavigationPolicyInfo& info) {
133 if (info.frame == frame->web_frame() && frame == root_ && delegate_ && 135 if (info.frame == frame->web_frame() && frame == root_ && delegate_ &&
134 delegate_->ShouldNavigateLocallyInMainFrame()) { 136 delegate_->ShouldNavigateLocallyInMainFrame()) {
135 return info.defaultPolicy; 137 return info.defaultPolicy;
136 } 138 }
137 139
138 if (CanNavigateLocally(info.frame, info.urlRequest)) 140 if (CanNavigateLocally(info.frame, info.urlRequest))
139 return info.defaultPolicy; 141 return info.defaultPolicy;
140 142
141 // TODO(sky): this is wrong for subframes. In fact NavigatorHost should likely 143 // TODO(sky): this is wrong for subframes. In fact NavigatorHost should likely
142 // be merged with Frame. 144 // be merged with Frame.
143 if (navigator_host_.get()) { 145 if (navigator_host_.get()) {
144 mojo::URLRequestPtr url_request = mojo::URLRequest::From(info.urlRequest); 146 mojo::URLRequestPtr url_request = mojo::URLRequest::From(info.urlRequest);
145 navigator_host_->RequestNavigate( 147 navigator_host_->RequestNavigate(
146 WebNavigationPolicyToNavigationTarget(info.defaultPolicy), 148 WebNavigationPolicyToNavigationTarget(info.defaultPolicy),
147 url_request.Pass()); 149 url_request.Pass());
148 } 150 }
149 151
150 return blink::WebNavigationPolicyIgnore; 152 return blink::WebNavigationPolicyIgnore;
151 } 153 }
152 154
153 void FrameTreeManager::OnFrameDidFinishLoad(Frame* frame) { 155 void HTMLFrameTreeManager::OnFrameDidFinishLoad(HTMLFrame* frame) {
154 if (delegate_) 156 if (delegate_)
155 delegate_->OnFrameDidFinishLoad(frame); 157 delegate_->OnFrameDidFinishLoad(frame);
156 } 158 }
157 159
158 void FrameTreeManager::OnFrameDidNavigateLocally(Frame* frame, 160 void HTMLFrameTreeManager::OnFrameDidNavigateLocally(HTMLFrame* frame,
159 const std::string& url) { 161 const std::string& url) {
160 if (navigator_host_.get() && frame == root_) 162 if (navigator_host_.get() && frame == root_)
161 navigator_host_->DidNavigateLocally(url); 163 navigator_host_->DidNavigateLocally(url);
162 } 164 }
163 165
164 void FrameTreeManager::OnFrameDestroyed(Frame* frame) { 166 void HTMLFrameTreeManager::OnFrameDestroyed(HTMLFrame* frame) {
165 if (frame == root_) { 167 if (frame == root_) {
166 root_ = nullptr; 168 root_ = nullptr;
167 // Shortly after this HTMLDocumentOOPIF should get ViewManagerDestroyed() 169 // Shortly after this HTMLDocumentOOPIF should get ViewManagerDestroyed()
168 // and delete us. 170 // and delete us.
169 } 171 }
170 } 172 }
171 173
172 void FrameTreeManager::OnFrameDidChangeName(Frame* frame, 174 void HTMLFrameTreeManager::OnFrameDidChangeName(HTMLFrame* frame,
173 const blink::WebString& name) { 175 const blink::WebString& name) {
174 if (frame != GetLocalFrame()) 176 if (frame != GetLocalFrame())
175 return; 177 return;
176 178
177 mojo::String mojo_name; 179 mojo::String mojo_name;
178 if (!name.isNull()) 180 if (!name.isNull())
179 mojo_name = name.utf8(); 181 mojo_name = name.utf8();
180 server_->SetFrameName(mojo_name); 182 server_->SetFrameName(mojo_name);
181 } 183 }
182 184
183 void FrameTreeManager::OnConnect( 185 void HTMLFrameTreeManager::OnConnect(
184 mandoline::FrameTreeServerPtr server, 186 mandoline::FrameTreeServerPtr server,
185 mojo::Array<mandoline::FrameDataPtr> frame_data) { 187 mojo::Array<mandoline::FrameDataPtr> frame_data) {
186 // OnConnection() is only sent once, and has been received (by 188 // OnConnection() is only sent once, and has been received (by
187 // DocumentResourceWaiter) by the time we get here. 189 // DocumentResourceWaiter) by the time we get here.
188 NOTREACHED(); 190 NOTREACHED();
189 } 191 }
190 192
191 void FrameTreeManager::LoadingStarted() { 193 void HTMLFrameTreeManager::LoadingStarted() {
192 server_->LoadingStarted(); 194 server_->LoadingStarted();
193 } 195 }
194 196
195 void FrameTreeManager::LoadingStopped() { 197 void HTMLFrameTreeManager::LoadingStopped() {
196 server_->LoadingStopped(); 198 server_->LoadingStopped();
197 } 199 }
198 200
199 void FrameTreeManager::ProgressChanged(double progress) { 201 void HTMLFrameTreeManager::ProgressChanged(double progress) {
200 server_->ProgressChanged(progress); 202 server_->ProgressChanged(progress);
201 } 203 }
202 204
203 void FrameTreeManager::OnFrameAdded(mandoline::FrameDataPtr frame_data) { 205 void HTMLFrameTreeManager::OnFrameAdded(mandoline::FrameDataPtr frame_data) {
204 NOTIMPLEMENTED(); 206 NOTIMPLEMENTED();
205 } 207 }
206 208
207 void FrameTreeManager::OnFrameRemoved(uint32_t frame_id) { 209 void HTMLFrameTreeManager::OnFrameRemoved(uint32_t frame_id) {
208 NOTIMPLEMENTED(); 210 NOTIMPLEMENTED();
209 } 211 }
210 212
211 void FrameTreeManager::OnFrameNameChanged(uint32_t frame_id, 213 void HTMLFrameTreeManager::OnFrameNameChanged(uint32_t frame_id,
212 const mojo::String& name) { 214 const mojo::String& name) {
213 Frame* frame = root_->FindFrame(frame_id); 215 HTMLFrame* frame = root_->FindFrame(frame_id);
214 if (frame) 216 if (frame)
215 frame->SetRemoteFrameName(name); 217 frame->SetRemoteFrameName(name);
216 } 218 }
217 219
218 } // namespace mojo 220 } // namespace mojo
OLDNEW
« no previous file with comments | « components/html_viewer/html_frame_tree_manager.h ('k') | components/html_viewer/html_frame_tree_manager_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698