OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/html_document.h" | 5 #include "components/html_viewer/html_document.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" |
10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 connection->AddService<mus::mojom::WindowTreeClient>(this); | 110 connection->AddService<mus::mojom::WindowTreeClient>(this); |
111 connection->AddService<devtools_service::DevToolsAgent>(this); | 111 connection->AddService<devtools_service::DevToolsAgent>(this); |
112 if (IsTestInterfaceEnabled()) | 112 if (IsTestInterfaceEnabled()) |
113 connection->AddService<TestHTMLViewer>(this); | 113 connection->AddService<TestHTMLViewer>(this); |
114 | 114 |
115 resource_waiter_.reset( | 115 resource_waiter_.reset( |
116 new DocumentResourceWaiter(global_state_, response.Pass(), this)); | 116 new DocumentResourceWaiter(global_state_, response.Pass(), this)); |
117 } | 117 } |
118 | 118 |
119 void HTMLDocument::Destroy() { | 119 void HTMLDocument::Destroy() { |
| 120 TRACE_EVENT0("html_viewer", "HTMLDocument::Destroy"); |
120 if (resource_waiter_) { | 121 if (resource_waiter_) { |
121 mus::Window* root = resource_waiter_->root(); | 122 mus::Window* root = resource_waiter_->root(); |
122 if (root) { | 123 if (root) { |
123 resource_waiter_.reset(); | 124 resource_waiter_.reset(); |
124 delete root->connection(); | 125 delete root->connection(); |
125 } else { | 126 } else { |
126 delete this; | 127 delete this; |
127 } | 128 } |
128 } else if (frame_) { | 129 } else if (frame_) { |
129 // Closing the frame ends up destroying the ViewManager, which triggers | 130 // Closing the frame ends up destroying the ViewManager, which triggers |
(...skipping 10 matching lines...) Expand all Loading... |
140 } | 141 } |
141 } | 142 } |
142 | 143 |
143 HTMLDocument::~HTMLDocument() { | 144 HTMLDocument::~HTMLDocument() { |
144 delete_callback_.Run(this); | 145 delete_callback_.Run(this); |
145 | 146 |
146 STLDeleteElements(&ax_providers_); | 147 STLDeleteElements(&ax_providers_); |
147 } | 148 } |
148 | 149 |
149 void HTMLDocument::Load() { | 150 void HTMLDocument::Load() { |
| 151 TRACE_EVENT0("html_viewer", "HTMLDocument::Load"); |
150 DCHECK(resource_waiter_ && resource_waiter_->is_ready()); | 152 DCHECK(resource_waiter_ && resource_waiter_->is_ready()); |
151 | 153 |
152 // Note: |window| is null if we're taking over for an existing frame. | 154 // Note: |window| is null if we're taking over for an existing frame. |
153 mus::Window* window = resource_waiter_->root(); | 155 mus::Window* window = resource_waiter_->root(); |
154 if (window) { | 156 if (window) { |
155 global_state_->InitIfNecessary( | 157 global_state_->InitIfNecessary( |
156 window->viewport_metrics().size_in_pixels.To<gfx::Size>(), | 158 window->viewport_metrics().size_in_pixels.To<gfx::Size>(), |
157 window->viewport_metrics().device_pixel_ratio); | 159 window->viewport_metrics().device_pixel_ratio); |
158 } | 160 } |
159 | 161 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 void HTMLDocument::OnEmbed(Window* root) { | 203 void HTMLDocument::OnEmbed(Window* root) { |
202 transferable_state_.root = root; | 204 transferable_state_.root = root; |
203 resource_waiter_->SetRoot(root); | 205 resource_waiter_->SetRoot(root); |
204 } | 206 } |
205 | 207 |
206 void HTMLDocument::OnConnectionLost(mus::WindowTreeConnection* connection) { | 208 void HTMLDocument::OnConnectionLost(mus::WindowTreeConnection* connection) { |
207 delete this; | 209 delete this; |
208 } | 210 } |
209 | 211 |
210 void HTMLDocument::OnFrameDidFinishLoad() { | 212 void HTMLDocument::OnFrameDidFinishLoad() { |
| 213 TRACE_EVENT0("html_viewer", "HTMLDocument::OnFrameDidFinishLoad"); |
211 did_finish_local_frame_load_ = true; | 214 did_finish_local_frame_load_ = true; |
212 scoped_ptr<BeforeLoadCache> before_load_cache = before_load_cache_.Pass(); | 215 scoped_ptr<BeforeLoadCache> before_load_cache = before_load_cache_.Pass(); |
213 if (!before_load_cache) | 216 if (!before_load_cache) |
214 return; | 217 return; |
215 | 218 |
216 // Bind any pending AxProvider and TestHTMLViewer interface requests. | 219 // Bind any pending AxProvider and TestHTMLViewer interface requests. |
217 for (auto it : before_load_cache->ax_provider_requests) { | 220 for (auto it : before_load_cache->ax_provider_requests) { |
218 ax_providers_.insert(new AxProviderImpl( | 221 ax_providers_.insert(new AxProviderImpl( |
219 frame_->frame_tree_manager()->GetWebView(), it->Pass())); | 222 frame_->frame_tree_manager()->GetWebView(), it->Pass())); |
220 } | 223 } |
(...skipping 12 matching lines...) Expand all Loading... |
233 return factory_; | 236 return factory_; |
234 } | 237 } |
235 | 238 |
236 void HTMLDocument::OnFrameSwappedToRemote() { | 239 void HTMLDocument::OnFrameSwappedToRemote() { |
237 // When the frame becomes remote HTMLDocument is no longer needed. | 240 // When the frame becomes remote HTMLDocument is no longer needed. |
238 frame_ = nullptr; | 241 frame_ = nullptr; |
239 Destroy(); | 242 Destroy(); |
240 } | 243 } |
241 | 244 |
242 void HTMLDocument::OnSwap(HTMLFrame* frame, HTMLFrameDelegate* old_delegate) { | 245 void HTMLDocument::OnSwap(HTMLFrame* frame, HTMLFrameDelegate* old_delegate) { |
| 246 TRACE_EVENT0("html_viewer", "HTMLDocument::OnSwap"); |
243 DCHECK(frame->IsLocal()); | 247 DCHECK(frame->IsLocal()); |
244 DCHECK(frame->window()); | 248 DCHECK(frame->window()); |
245 DCHECK(!frame_); | 249 DCHECK(!frame_); |
246 DCHECK(!transferable_state_.root); | 250 DCHECK(!transferable_state_.root); |
247 if (!old_delegate) { | 251 if (!old_delegate) { |
248 // We're taking over a child of a local root that isn't associated with a | 252 // We're taking over a child of a local root that isn't associated with a |
249 // delegate. In this case the frame's window is not the root of the | 253 // delegate. In this case the frame's window is not the root of the |
250 // WindowTreeConnection. | 254 // WindowTreeConnection. |
251 transferable_state_.owns_window_tree_connection = false; | 255 transferable_state_.owns_window_tree_connection = false; |
252 transferable_state_.root = frame->window(); | 256 transferable_state_.root = frame->window(); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 DCHECK(!transferable_state_.window_tree_delegate_impl); | 322 DCHECK(!transferable_state_.window_tree_delegate_impl); |
319 transferable_state_.window_tree_delegate_impl.reset( | 323 transferable_state_.window_tree_delegate_impl.reset( |
320 new WindowTreeDelegateImpl(this)); | 324 new WindowTreeDelegateImpl(this)); |
321 transferable_state_.owns_window_tree_connection = true; | 325 transferable_state_.owns_window_tree_connection = true; |
322 mus::WindowTreeConnection::Create( | 326 mus::WindowTreeConnection::Create( |
323 transferable_state_.window_tree_delegate_impl.get(), request.Pass(), | 327 transferable_state_.window_tree_delegate_impl.get(), request.Pass(), |
324 mus::WindowTreeConnection::CreateType::DONT_WAIT_FOR_EMBED); | 328 mus::WindowTreeConnection::CreateType::DONT_WAIT_FOR_EMBED); |
325 } | 329 } |
326 | 330 |
327 } // namespace html_viewer | 331 } // namespace html_viewer |
OLD | NEW |