| 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 <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 // Otherwise we'll notify the process host when we are first shown. | 219 // Otherwise we'll notify the process host when we are first shown. |
| 220 if (!hidden) | 220 if (!hidden) |
| 221 process_->WidgetRestored(); | 221 process_->WidgetRestored(); |
| 222 | 222 |
| 223 accessibility_mode_ = | 223 accessibility_mode_ = |
| 224 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode(); | 224 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode(); |
| 225 | 225 |
| 226 for (size_t i = 0; i < g_created_callbacks.Get().size(); i++) | 226 for (size_t i = 0; i < g_created_callbacks.Get().size(); i++) |
| 227 g_created_callbacks.Get().at(i).Run(this); | 227 g_created_callbacks.Get().at(i).Run(this); |
| 228 | 228 |
| 229 input_router_.reset( | 229 input_router_ = CreateInputRouter(); |
| 230 new ImmediateInputRouter(process_, this, this, routing_id_)); | |
| 231 | 230 |
| 232 #if defined(USE_AURA) | 231 #if defined(USE_AURA) |
| 233 bool overscroll_enabled = CommandLine::ForCurrentProcess()-> | 232 bool overscroll_enabled = CommandLine::ForCurrentProcess()-> |
| 234 GetSwitchValueASCII(switches::kOverscrollHistoryNavigation) != "0"; | 233 GetSwitchValueASCII(switches::kOverscrollHistoryNavigation) != "0"; |
| 235 SetOverscrollControllerEnabled(overscroll_enabled); | 234 SetOverscrollControllerEnabled(overscroll_enabled); |
| 236 #endif | 235 #endif |
| 237 } | 236 } |
| 238 | 237 |
| 239 RenderWidgetHostImpl::~RenderWidgetHostImpl() { | 238 RenderWidgetHostImpl::~RenderWidgetHostImpl() { |
| 240 SetView(NULL); | 239 SetView(NULL); |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 if (!enabled) | 411 if (!enabled) |
| 413 overscroll_controller_.reset(); | 412 overscroll_controller_.reset(); |
| 414 else if (!overscroll_controller_) | 413 else if (!overscroll_controller_) |
| 415 overscroll_controller_.reset(new OverscrollController(this)); | 414 overscroll_controller_.reset(new OverscrollController(this)); |
| 416 } | 415 } |
| 417 | 416 |
| 418 void RenderWidgetHostImpl::SuppressNextCharEvents() { | 417 void RenderWidgetHostImpl::SuppressNextCharEvents() { |
| 419 suppress_next_char_events_ = true; | 418 suppress_next_char_events_ = true; |
| 420 } | 419 } |
| 421 | 420 |
| 421 void RenderWidgetHostImpl::FlushInput() { |
| 422 input_router_->Flush(); |
| 423 } |
| 424 |
| 422 void RenderWidgetHostImpl::Init() { | 425 void RenderWidgetHostImpl::Init() { |
| 423 DCHECK(process_->HasConnection()); | 426 DCHECK(process_->HasConnection()); |
| 424 | 427 |
| 425 renderer_initialized_ = true; | 428 renderer_initialized_ = true; |
| 426 | 429 |
| 427 GpuSurfaceTracker::Get()->SetSurfaceHandle( | 430 GpuSurfaceTracker::Get()->SetSurfaceHandle( |
| 428 surface_id_, GetCompositingSurface()); | 431 surface_id_, GetCompositingSurface()); |
| 429 | 432 |
| 430 // Send the ack along with the information on placement. | 433 // Send the ack along with the information on placement. |
| 431 Send(new ViewMsg_CreatingNew_ACK(routing_id_)); | 434 Send(new ViewMsg_CreatingNew_ACK(routing_id_)); |
| (...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1270 | 1273 |
| 1271 void RenderWidgetHostImpl::RendererExited(base::TerminationStatus status, | 1274 void RenderWidgetHostImpl::RendererExited(base::TerminationStatus status, |
| 1272 int exit_code) { | 1275 int exit_code) { |
| 1273 // Clearing this flag causes us to re-create the renderer when recovering | 1276 // Clearing this flag causes us to re-create the renderer when recovering |
| 1274 // from a crashed renderer. | 1277 // from a crashed renderer. |
| 1275 renderer_initialized_ = false; | 1278 renderer_initialized_ = false; |
| 1276 | 1279 |
| 1277 waiting_for_screen_rects_ack_ = false; | 1280 waiting_for_screen_rects_ack_ = false; |
| 1278 | 1281 |
| 1279 // Reset to ensure that input routing works with a new renderer. | 1282 // Reset to ensure that input routing works with a new renderer. |
| 1280 input_router_.reset( | 1283 input_router_ = CreateInputRouter(); |
| 1281 new ImmediateInputRouter(process_, this, this, routing_id_)); | |
| 1282 | 1284 |
| 1283 if (overscroll_controller_) | 1285 if (overscroll_controller_) |
| 1284 overscroll_controller_->Reset(); | 1286 overscroll_controller_->Reset(); |
| 1285 | 1287 |
| 1286 // Must reset these to ensure that keyboard events work with a new renderer. | 1288 // Must reset these to ensure that keyboard events work with a new renderer. |
| 1287 suppress_next_char_events_ = false; | 1289 suppress_next_char_events_ = false; |
| 1288 | 1290 |
| 1289 // Reset some fields in preparation for recovering from a crash. | 1291 // Reset some fields in preparation for recovering from a crash. |
| 1290 ResetSizeAndRepaintPendingFlags(); | 1292 ResetSizeAndRepaintPendingFlags(); |
| 1291 current_size_.SetSize(0, 0); | 1293 current_size_.SetSize(0, 0); |
| (...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2146 | 2148 |
| 2147 bool RenderWidgetHostImpl::OnSendGestureEventImmediately( | 2149 bool RenderWidgetHostImpl::OnSendGestureEventImmediately( |
| 2148 const GestureEventWithLatencyInfo& gesture_event) { | 2150 const GestureEventWithLatencyInfo& gesture_event) { |
| 2149 TRACE_EVENT_INSTANT0("input", | 2151 TRACE_EVENT_INSTANT0("input", |
| 2150 "RenderWidgetHostImpl::OnSendGestureEventImmediately", | 2152 "RenderWidgetHostImpl::OnSendGestureEventImmediately", |
| 2151 TRACE_EVENT_SCOPE_THREAD); | 2153 TRACE_EVENT_SCOPE_THREAD); |
| 2152 return !IgnoreInputEvents(); | 2154 return !IgnoreInputEvents(); |
| 2153 } | 2155 } |
| 2154 | 2156 |
| 2155 void RenderWidgetHostImpl::SetNeedsFlush() { | 2157 void RenderWidgetHostImpl::SetNeedsFlush() { |
| 2158 if (view_) |
| 2159 view_->OnSetNeedsFlushInput(); |
| 2156 } | 2160 } |
| 2157 | 2161 |
| 2158 void RenderWidgetHostImpl::DidFlush() { | 2162 void RenderWidgetHostImpl::DidFlush() { |
| 2163 if (view_) |
| 2164 view_->OnDidFlushInput(); |
| 2159 } | 2165 } |
| 2160 | 2166 |
| 2161 void RenderWidgetHostImpl::OnKeyboardEventAck( | 2167 void RenderWidgetHostImpl::OnKeyboardEventAck( |
| 2162 const NativeWebKeyboardEvent& event, | 2168 const NativeWebKeyboardEvent& event, |
| 2163 InputEventAckState ack_result) { | 2169 InputEventAckState ack_result) { |
| 2164 #if defined(OS_MACOSX) | 2170 #if defined(OS_MACOSX) |
| 2165 if (!is_hidden() && view_ && view_->PostProcessEventForPluginIme(event)) | 2171 if (!is_hidden() && view_ && view_->PostProcessEventForPluginIme(event)) |
| 2166 return; | 2172 return; |
| 2167 #endif | 2173 #endif |
| 2168 | 2174 |
| (...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2457 // Clear the new_auto_size_ since the empty value is used as a flag to | 2463 // Clear the new_auto_size_ since the empty value is used as a flag to |
| 2458 // indicate that no callback is in progress (i.e. without this line | 2464 // indicate that no callback is in progress (i.e. without this line |
| 2459 // DelayedAutoResized will not get called again). | 2465 // DelayedAutoResized will not get called again). |
| 2460 new_auto_size_.SetSize(0, 0); | 2466 new_auto_size_.SetSize(0, 0); |
| 2461 if (!should_auto_resize_) | 2467 if (!should_auto_resize_) |
| 2462 return; | 2468 return; |
| 2463 | 2469 |
| 2464 OnRenderAutoResized(new_size); | 2470 OnRenderAutoResized(new_size); |
| 2465 } | 2471 } |
| 2466 | 2472 |
| 2473 scoped_ptr<InputRouter> RenderWidgetHostImpl::CreateInputRouter() { |
| 2474 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 2475 switches::kEnableBufferedInputRouter)) { |
| 2476 return scoped_ptr<InputRouter>( |
| 2477 new BufferedInputRouter(process_, this, this, routing_id_)); |
| 2478 } else { |
| 2479 return scoped_ptr<InputRouter>( |
| 2480 new ImmediateInputRouter(process_, this, this, routing_id_)); |
| 2481 } |
| 2482 } |
| 2483 |
| 2467 void RenderWidgetHostImpl::DetachDelegate() { | 2484 void RenderWidgetHostImpl::DetachDelegate() { |
| 2468 delegate_ = NULL; | 2485 delegate_ = NULL; |
| 2469 } | 2486 } |
| 2470 | 2487 |
| 2471 void RenderWidgetHostImpl::ComputeTouchLatency( | 2488 void RenderWidgetHostImpl::ComputeTouchLatency( |
| 2472 const ui::LatencyInfo& latency_info) { | 2489 const ui::LatencyInfo& latency_info) { |
| 2473 ui::LatencyInfo::LatencyComponent ui_component; | 2490 ui::LatencyInfo::LatencyComponent ui_component; |
| 2474 ui::LatencyInfo::LatencyComponent rwh_component; | 2491 ui::LatencyInfo::LatencyComponent rwh_component; |
| 2475 ui::LatencyInfo::LatencyComponent acked_component; | 2492 ui::LatencyInfo::LatencyComponent acked_component; |
| 2476 | 2493 |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2576 int process_id = (b->first.second >> 32) & 0xffffffff; | 2593 int process_id = (b->first.second >> 32) & 0xffffffff; |
| 2577 RenderWidgetHost* rwh = | 2594 RenderWidgetHost* rwh = |
| 2578 RenderWidgetHost::FromID(process_id, routing_id); | 2595 RenderWidgetHost::FromID(process_id, routing_id); |
| 2579 if (!rwh) | 2596 if (!rwh) |
| 2580 continue; | 2597 continue; |
| 2581 RenderWidgetHostImpl::From(rwh)->FrameSwapped(latency_info); | 2598 RenderWidgetHostImpl::From(rwh)->FrameSwapped(latency_info); |
| 2582 } | 2599 } |
| 2583 } | 2600 } |
| 2584 | 2601 |
| 2585 } // namespace content | 2602 } // namespace content |
| OLD | NEW |