| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/renderer_host/render_widget_host_impl.h" | 5 #include "content/browser/renderer_host/render_widget_host_impl.h" |
| 6 | 6 |
| 7 #include <math.h> | 7 #include <math.h> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 namespace { | 84 namespace { |
| 85 | 85 |
| 86 bool g_check_for_pending_resize_ack = true; | 86 bool g_check_for_pending_resize_ack = true; |
| 87 | 87 |
| 88 // How long to (synchronously) wait for the renderer to respond with a | 88 // How long to (synchronously) wait for the renderer to respond with a |
| 89 // PaintRect message, when our backing-store is invalid, before giving up and | 89 // PaintRect message, when our backing-store is invalid, before giving up and |
| 90 // returning a null or incorrectly sized backing-store from GetBackingStore. | 90 // returning a null or incorrectly sized backing-store from GetBackingStore. |
| 91 // This timeout impacts the "choppiness" of our window resize perf. | 91 // This timeout impacts the "choppiness" of our window resize perf. |
| 92 const int kPaintMsgTimeoutMS = 50; | 92 const int kPaintMsgTimeoutMS = 50; |
| 93 | 93 |
| 94 base::LazyInstance<std::vector<RenderWidgetHost::CreatedCallback> > | |
| 95 g_created_callbacks = LAZY_INSTANCE_INITIALIZER; | |
| 96 | |
| 97 typedef std::pair<int32, int32> RenderWidgetHostID; | 94 typedef std::pair<int32, int32> RenderWidgetHostID; |
| 98 typedef base::hash_map<RenderWidgetHostID, RenderWidgetHostImpl*> | 95 typedef base::hash_map<RenderWidgetHostID, RenderWidgetHostImpl*> |
| 99 RoutingIDWidgetMap; | 96 RoutingIDWidgetMap; |
| 100 base::LazyInstance<RoutingIDWidgetMap> g_routing_id_widget_map = | 97 base::LazyInstance<RoutingIDWidgetMap> g_routing_id_widget_map = |
| 101 LAZY_INSTANCE_INITIALIZER; | 98 LAZY_INSTANCE_INITIALIZER; |
| 102 | 99 |
| 103 // Implements the RenderWidgetHostIterator interface. It keeps a list of | 100 // Implements the RenderWidgetHostIterator interface. It keeps a list of |
| 104 // RenderWidgetHosts, and makes sure it returns a live RenderWidgetHost at each | 101 // RenderWidgetHosts, and makes sure it returns a live RenderWidgetHost at each |
| 105 // iteration (or NULL if there isn't any left). | 102 // iteration (or NULL if there isn't any left). |
| 106 class RenderWidgetHostIteratorImpl : public RenderWidgetHostIterator { | 103 class RenderWidgetHostIteratorImpl : public RenderWidgetHostIterator { |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 process_->AddRoute(routing_id_, this); | 215 process_->AddRoute(routing_id_, this); |
| 219 | 216 |
| 220 // If we're initially visible, tell the process host that we're alive. | 217 // If we're initially visible, tell the process host that we're alive. |
| 221 // Otherwise we'll notify the process host when we are first shown. | 218 // Otherwise we'll notify the process host when we are first shown. |
| 222 if (!hidden) | 219 if (!hidden) |
| 223 process_->WidgetRestored(); | 220 process_->WidgetRestored(); |
| 224 | 221 |
| 225 accessibility_mode_ = | 222 accessibility_mode_ = |
| 226 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode(); | 223 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode(); |
| 227 | 224 |
| 228 for (size_t i = 0; i < g_created_callbacks.Get().size(); i++) | |
| 229 g_created_callbacks.Get().at(i).Run(this); | |
| 230 | |
| 231 input_router_.reset( | 225 input_router_.reset( |
| 232 new ImmediateInputRouter(process_, this, this, routing_id_)); | 226 new ImmediateInputRouter(process_, this, this, routing_id_)); |
| 233 | 227 |
| 234 #if defined(USE_AURA) | 228 #if defined(USE_AURA) |
| 235 bool overscroll_enabled = CommandLine::ForCurrentProcess()-> | 229 bool overscroll_enabled = CommandLine::ForCurrentProcess()-> |
| 236 GetSwitchValueASCII(switches::kOverscrollHistoryNavigation) != "0"; | 230 GetSwitchValueASCII(switches::kOverscrollHistoryNavigation) != "0"; |
| 237 SetOverscrollControllerEnabled(overscroll_enabled); | 231 SetOverscrollControllerEnabled(overscroll_enabled); |
| 238 #endif | 232 #endif |
| 239 } | 233 } |
| 240 | 234 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 } | 302 } |
| 309 | 303 |
| 310 return scoped_ptr<RenderWidgetHostIterator>(hosts); | 304 return scoped_ptr<RenderWidgetHostIterator>(hosts); |
| 311 } | 305 } |
| 312 | 306 |
| 313 // static | 307 // static |
| 314 RenderWidgetHostImpl* RenderWidgetHostImpl::From(RenderWidgetHost* rwh) { | 308 RenderWidgetHostImpl* RenderWidgetHostImpl::From(RenderWidgetHost* rwh) { |
| 315 return rwh->AsRenderWidgetHostImpl(); | 309 return rwh->AsRenderWidgetHostImpl(); |
| 316 } | 310 } |
| 317 | 311 |
| 318 // static | |
| 319 void RenderWidgetHost::AddCreatedCallback(const CreatedCallback& callback) { | |
| 320 g_created_callbacks.Get().push_back(callback); | |
| 321 } | |
| 322 | |
| 323 // static | |
| 324 void RenderWidgetHost::RemoveCreatedCallback(const CreatedCallback& callback) { | |
| 325 for (size_t i = 0; i < g_created_callbacks.Get().size(); ++i) { | |
| 326 if (g_created_callbacks.Get().at(i).Equals(callback)) { | |
| 327 g_created_callbacks.Get().erase(g_created_callbacks.Get().begin() + i); | |
| 328 return; | |
| 329 } | |
| 330 } | |
| 331 } | |
| 332 | |
| 333 void RenderWidgetHostImpl::SetView(RenderWidgetHostView* view) { | 312 void RenderWidgetHostImpl::SetView(RenderWidgetHostView* view) { |
| 334 view_ = RenderWidgetHostViewPort::FromRWHV(view); | 313 view_ = RenderWidgetHostViewPort::FromRWHV(view); |
| 335 | 314 |
| 336 if (!view_) { | 315 if (!view_) { |
| 337 GpuSurfaceTracker::Get()->SetSurfaceHandle( | 316 GpuSurfaceTracker::Get()->SetSurfaceHandle( |
| 338 surface_id_, gfx::GLSurfaceHandle()); | 317 surface_id_, gfx::GLSurfaceHandle()); |
| 339 } | 318 } |
| 340 } | 319 } |
| 341 | 320 |
| 342 RenderProcessHost* RenderWidgetHostImpl::GetProcess() const { | 321 RenderProcessHost* RenderWidgetHostImpl::GetProcess() const { |
| (...skipping 2155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2498 continue; | 2477 continue; |
| 2499 } | 2478 } |
| 2500 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh); | 2479 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh); |
| 2501 if (rwhi_set.insert(rwhi).second) | 2480 if (rwhi_set.insert(rwhi).second) |
| 2502 rwhi->FrameSwapped(latency_info); | 2481 rwhi->FrameSwapped(latency_info); |
| 2503 } | 2482 } |
| 2504 } | 2483 } |
| 2505 } | 2484 } |
| 2506 | 2485 |
| 2507 } // namespace content | 2486 } // namespace content |
| OLD | NEW |