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 21 matching lines...) Expand all Loading... |
32 #include "content/browser/renderer_host/dip_util.h" | 32 #include "content/browser/renderer_host/dip_util.h" |
33 #include "content/browser/renderer_host/input/immediate_input_router.h" | 33 #include "content/browser/renderer_host/input/immediate_input_router.h" |
34 #include "content/browser/renderer_host/input/synthetic_gesture.h" | 34 #include "content/browser/renderer_host/input/synthetic_gesture.h" |
35 #include "content/browser/renderer_host/input/synthetic_gesture_controller.h" | 35 #include "content/browser/renderer_host/input/synthetic_gesture_controller.h" |
36 #include "content/browser/renderer_host/input/synthetic_gesture_target.h" | 36 #include "content/browser/renderer_host/input/synthetic_gesture_target.h" |
37 #include "content/browser/renderer_host/overscroll_controller.h" | 37 #include "content/browser/renderer_host/overscroll_controller.h" |
38 #include "content/browser/renderer_host/render_process_host_impl.h" | 38 #include "content/browser/renderer_host/render_process_host_impl.h" |
39 #include "content/browser/renderer_host/render_view_host_impl.h" | 39 #include "content/browser/renderer_host/render_view_host_impl.h" |
40 #include "content/browser/renderer_host/render_widget_helper.h" | 40 #include "content/browser/renderer_host/render_widget_helper.h" |
41 #include "content/browser/renderer_host/render_widget_host_delegate.h" | 41 #include "content/browser/renderer_host/render_widget_host_delegate.h" |
| 42 #include "content/browser/tracing/tracing_controller_impl.h" |
42 #include "content/common/accessibility_messages.h" | 43 #include "content/common/accessibility_messages.h" |
43 #include "content/common/content_constants_internal.h" | 44 #include "content/common/content_constants_internal.h" |
44 #include "content/common/gpu/gpu_messages.h" | 45 #include "content/common/gpu/gpu_messages.h" |
45 #include "content/common/input_messages.h" | 46 #include "content/common/input_messages.h" |
46 #include "content/common/view_messages.h" | 47 #include "content/common/view_messages.h" |
47 #include "content/port/browser/render_widget_host_view_port.h" | 48 #include "content/port/browser/render_widget_host_view_port.h" |
48 #include "content/public/browser/native_web_keyboard_event.h" | 49 #include "content/public/browser/native_web_keyboard_event.h" |
49 #include "content/public/browser/notification_service.h" | 50 #include "content/public/browser/notification_service.h" |
50 #include "content/public/browser/notification_types.h" | 51 #include "content/public/browser/notification_types.h" |
51 #include "content/public/browser/render_widget_host_iterator.h" | 52 #include "content/public/browser/render_widget_host_iterator.h" |
| 53 #include "content/public/browser/tracing_synthetic_delay_configuration.h" |
52 #include "content/public/browser/user_metrics.h" | 54 #include "content/public/browser/user_metrics.h" |
53 #include "content/public/common/content_constants.h" | 55 #include "content/public/common/content_constants.h" |
54 #include "content/public/common/content_switches.h" | 56 #include "content/public/common/content_switches.h" |
55 #include "content/public/common/result_codes.h" | 57 #include "content/public/common/result_codes.h" |
56 #include "skia/ext/image_operations.h" | 58 #include "skia/ext/image_operations.h" |
57 #include "skia/ext/platform_canvas.h" | 59 #include "skia/ext/platform_canvas.h" |
58 #include "third_party/WebKit/public/web/WebCompositionUnderline.h" | 60 #include "third_party/WebKit/public/web/WebCompositionUnderline.h" |
59 #include "ui/events/event.h" | 61 #include "ui/events/event.h" |
60 #include "ui/events/keycodes/keyboard_codes.h" | 62 #include "ui/events/keycodes/keyboard_codes.h" |
61 #include "ui/gfx/size_conversions.h" | 63 #include "ui/gfx/size_conversions.h" |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 IPC_MESSAGE_HANDLER(ViewHostMsg_PaintAtSize_ACK, OnPaintAtSizeAck) | 464 IPC_MESSAGE_HANDLER(ViewHostMsg_PaintAtSize_ACK, OnPaintAtSizeAck) |
463 #if defined(OS_MACOSX) | 465 #if defined(OS_MACOSX) |
464 IPC_MESSAGE_HANDLER(ViewHostMsg_CompositorSurfaceBuffersSwapped, | 466 IPC_MESSAGE_HANDLER(ViewHostMsg_CompositorSurfaceBuffersSwapped, |
465 OnCompositorSurfaceBuffersSwapped) | 467 OnCompositorSurfaceBuffersSwapped) |
466 #endif | 468 #endif |
467 IPC_MESSAGE_HANDLER_GENERIC(ViewHostMsg_SwapCompositorFrame, | 469 IPC_MESSAGE_HANDLER_GENERIC(ViewHostMsg_SwapCompositorFrame, |
468 msg_is_ok = OnSwapCompositorFrame(msg)) | 470 msg_is_ok = OnSwapCompositorFrame(msg)) |
469 IPC_MESSAGE_HANDLER(ViewHostMsg_DidOverscroll, OnOverscrolled) | 471 IPC_MESSAGE_HANDLER(ViewHostMsg_DidOverscroll, OnOverscrolled) |
470 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateRect, OnUpdateRect) | 472 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateRect, OnUpdateRect) |
471 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateIsDelayed, OnUpdateIsDelayed) | 473 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateIsDelayed, OnUpdateIsDelayed) |
| 474 IPC_MESSAGE_HANDLER(ViewHostMsg_ConfigureSyntheticDelays, |
| 475 OnConfigureSyntheticDelays) |
472 IPC_MESSAGE_HANDLER(ViewHostMsg_Focus, OnFocus) | 476 IPC_MESSAGE_HANDLER(ViewHostMsg_Focus, OnFocus) |
473 IPC_MESSAGE_HANDLER(ViewHostMsg_Blur, OnBlur) | 477 IPC_MESSAGE_HANDLER(ViewHostMsg_Blur, OnBlur) |
474 IPC_MESSAGE_HANDLER(ViewHostMsg_SetCursor, OnSetCursor) | 478 IPC_MESSAGE_HANDLER(ViewHostMsg_SetCursor, OnSetCursor) |
475 IPC_MESSAGE_HANDLER(ViewHostMsg_TextInputTypeChanged, | 479 IPC_MESSAGE_HANDLER(ViewHostMsg_TextInputTypeChanged, |
476 OnTextInputTypeChanged) | 480 OnTextInputTypeChanged) |
477 IPC_MESSAGE_HANDLER(ViewHostMsg_ImeCancelComposition, | 481 IPC_MESSAGE_HANDLER(ViewHostMsg_ImeCancelComposition, |
478 OnImeCancelComposition) | 482 OnImeCancelComposition) |
479 IPC_MESSAGE_HANDLER(ViewHostMsg_DidActivateAcceleratedCompositing, | 483 IPC_MESSAGE_HANDLER(ViewHostMsg_DidActivateAcceleratedCompositing, |
480 OnDidActivateAcceleratedCompositing) | 484 OnDidActivateAcceleratedCompositing) |
481 IPC_MESSAGE_HANDLER(ViewHostMsg_LockMouse, OnLockMouse) | 485 IPC_MESSAGE_HANDLER(ViewHostMsg_LockMouse, OnLockMouse) |
(...skipping 1241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1723 return; | 1727 return; |
1724 synthetic_gesture_controller_.reset( | 1728 synthetic_gesture_controller_.reset( |
1725 new SyntheticGestureController( | 1729 new SyntheticGestureController( |
1726 view_->CreateSyntheticGestureTarget().Pass())); | 1730 view_->CreateSyntheticGestureTarget().Pass())); |
1727 } | 1731 } |
1728 | 1732 |
1729 synthetic_gesture_controller_->QueueSyntheticGesture( | 1733 synthetic_gesture_controller_->QueueSyntheticGesture( |
1730 SyntheticGesture::Create(*gesture_packet.gesture_params())); | 1734 SyntheticGesture::Create(*gesture_packet.gesture_params())); |
1731 } | 1735 } |
1732 | 1736 |
| 1737 void RenderWidgetHostImpl::OnConfigureSyntheticDelays( |
| 1738 const std::vector<content::SyntheticDelayConfiguration>& delays) { |
| 1739 std::vector<content::TracingSyntheticDelayConfiguration> tracing_delays; |
| 1740 for (size_t i = 0; i < delays.size(); i++) { |
| 1741 content::TracingSyntheticDelayConfiguration delay; |
| 1742 delay.name = delays[i].name; |
| 1743 delay.target_duration = delays[i].target_duration; |
| 1744 delay.mode = |
| 1745 static_cast<base::debug::TraceEventSyntheticDelay::Mode>( |
| 1746 delays[i].mode); |
| 1747 tracing_delays.push_back(delay); |
| 1748 } |
| 1749 TracingControllerImpl::GetInstance()->ConfigureSyntheticDelays( |
| 1750 tracing_delays, |
| 1751 base::Bind(&RenderWidgetHostImpl::DidConfigureSyntheticDelays, |
| 1752 weak_factory_.GetWeakPtr())); |
| 1753 } |
| 1754 |
1733 void RenderWidgetHostImpl::OnFocus() { | 1755 void RenderWidgetHostImpl::OnFocus() { |
1734 // Only RenderViewHost can deal with that message. | 1756 // Only RenderViewHost can deal with that message. |
1735 RecordAction(UserMetricsAction("BadMessageTerminate_RWH4")); | 1757 RecordAction(UserMetricsAction("BadMessageTerminate_RWH4")); |
1736 GetProcess()->ReceivedBadMessage(); | 1758 GetProcess()->ReceivedBadMessage(); |
1737 } | 1759 } |
1738 | 1760 |
1739 void RenderWidgetHostImpl::OnBlur() { | 1761 void RenderWidgetHostImpl::OnBlur() { |
1740 // Only RenderViewHost can deal with that message. | 1762 // Only RenderViewHost can deal with that message. |
1741 RecordAction(UserMetricsAction("BadMessageTerminate_RWH5")); | 1763 RecordAction(UserMetricsAction("BadMessageTerminate_RWH5")); |
1742 GetProcess()->ReceivedBadMessage(); | 1764 GetProcess()->ReceivedBadMessage(); |
(...skipping 714 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2457 Send(new ViewMsg_WindowSnapshotCompleted( | 2479 Send(new ViewMsg_WindowSnapshotCompleted( |
2458 GetRoutingID(), snapshot_id, snapshot_size, png)); | 2480 GetRoutingID(), snapshot_id, snapshot_size, png)); |
2459 return; | 2481 return; |
2460 } | 2482 } |
2461 } | 2483 } |
2462 | 2484 |
2463 Send(new ViewMsg_WindowSnapshotCompleted( | 2485 Send(new ViewMsg_WindowSnapshotCompleted( |
2464 GetRoutingID(), snapshot_id, gfx::Size(), png)); | 2486 GetRoutingID(), snapshot_id, gfx::Size(), png)); |
2465 } | 2487 } |
2466 | 2488 |
| 2489 void RenderWidgetHostImpl::DidConfigureSyntheticDelays() { |
| 2490 Send(new ViewMsg_ConfigureSyntheticDelaysAck(GetRoutingID())); |
| 2491 } |
| 2492 |
2467 // static | 2493 // static |
2468 void RenderWidgetHostImpl::CompositorFrameDrawn( | 2494 void RenderWidgetHostImpl::CompositorFrameDrawn( |
2469 const ui::LatencyInfo& latency_info) { | 2495 const ui::LatencyInfo& latency_info) { |
2470 std::set<RenderWidgetHostImpl*> rwhi_set; | 2496 std::set<RenderWidgetHostImpl*> rwhi_set; |
2471 | 2497 |
2472 for (ui::LatencyInfo::LatencyMap::const_iterator b = | 2498 for (ui::LatencyInfo::LatencyMap::const_iterator b = |
2473 latency_info.latency_components.begin(); | 2499 latency_info.latency_components.begin(); |
2474 b != latency_info.latency_components.end(); | 2500 b != latency_info.latency_components.end(); |
2475 ++b) { | 2501 ++b) { |
2476 if (b->first.first == ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT || | 2502 if (b->first.first == ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT || |
2477 b->first.first == ui::WINDOW_SNAPSHOT_FRAME_NUMBER_COMPONENT) { | 2503 b->first.first == ui::WINDOW_SNAPSHOT_FRAME_NUMBER_COMPONENT) { |
2478 // Matches with GetLatencyComponentId | 2504 // Matches with GetLatencyComponentId |
2479 int routing_id = b->first.second & 0xffffffff; | 2505 int routing_id = b->first.second & 0xffffffff; |
2480 int process_id = (b->first.second >> 32) & 0xffffffff; | 2506 int process_id = (b->first.second >> 32) & 0xffffffff; |
2481 RenderWidgetHost* rwh = | 2507 RenderWidgetHost* rwh = |
2482 RenderWidgetHost::FromID(process_id, routing_id); | 2508 RenderWidgetHost::FromID(process_id, routing_id); |
2483 if (!rwh) { | 2509 if (!rwh) { |
2484 continue; | 2510 continue; |
2485 } | 2511 } |
2486 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh); | 2512 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh); |
2487 if (rwhi_set.insert(rwhi).second) | 2513 if (rwhi_set.insert(rwhi).second) |
2488 rwhi->FrameSwapped(latency_info); | 2514 rwhi->FrameSwapped(latency_info); |
2489 } | 2515 } |
2490 } | 2516 } |
2491 } | 2517 } |
2492 | 2518 |
2493 } // namespace content | 2519 } // namespace content |
OLD | NEW |