OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/renderer_host/render_widget_host.h" | 5 #include "chrome/browser/renderer_host/render_widget_host.h" |
6 | 6 |
7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
8 #include "base/histogram.h" | 8 #include "base/histogram.h" |
9 #include "base/keyboard_codes.h" | 9 #include "base/keyboard_codes.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 Destroy(); | 120 Destroy(); |
121 } | 121 } |
122 | 122 |
123 void RenderWidgetHost::OnMessageReceived(const IPC::Message &msg) { | 123 void RenderWidgetHost::OnMessageReceived(const IPC::Message &msg) { |
124 bool msg_is_ok = true; | 124 bool msg_is_ok = true; |
125 IPC_BEGIN_MESSAGE_MAP_EX(RenderWidgetHost, msg, msg_is_ok) | 125 IPC_BEGIN_MESSAGE_MAP_EX(RenderWidgetHost, msg, msg_is_ok) |
126 IPC_MESSAGE_HANDLER(ViewHostMsg_RenderViewReady, OnMsgRenderViewReady) | 126 IPC_MESSAGE_HANDLER(ViewHostMsg_RenderViewReady, OnMsgRenderViewReady) |
127 IPC_MESSAGE_HANDLER(ViewHostMsg_RenderViewGone, OnMsgRenderViewGone) | 127 IPC_MESSAGE_HANDLER(ViewHostMsg_RenderViewGone, OnMsgRenderViewGone) |
128 IPC_MESSAGE_HANDLER(ViewHostMsg_Close, OnMsgClose) | 128 IPC_MESSAGE_HANDLER(ViewHostMsg_Close, OnMsgClose) |
129 IPC_MESSAGE_HANDLER(ViewHostMsg_RequestMove, OnMsgRequestMove) | 129 IPC_MESSAGE_HANDLER(ViewHostMsg_RequestMove, OnMsgRequestMove) |
| 130 IPC_MESSAGE_HANDLER(ViewHostMsg_PaintAtSize_ACK, OnMsgPaintAtSizeAck) |
130 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateRect, OnMsgUpdateRect) | 131 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateRect, OnMsgUpdateRect) |
131 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateVideo, OnMsgCreateVideo) | 132 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateVideo, OnMsgCreateVideo) |
132 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateVideo, OnMsgUpdateVideo) | 133 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateVideo, OnMsgUpdateVideo) |
133 IPC_MESSAGE_HANDLER(ViewHostMsg_DestroyVideo, OnMsgDestroyVideo) | 134 IPC_MESSAGE_HANDLER(ViewHostMsg_DestroyVideo, OnMsgDestroyVideo) |
134 IPC_MESSAGE_HANDLER(ViewHostMsg_HandleInputEvent_ACK, OnMsgInputEventAck) | 135 IPC_MESSAGE_HANDLER(ViewHostMsg_HandleInputEvent_ACK, OnMsgInputEventAck) |
135 IPC_MESSAGE_HANDLER(ViewHostMsg_Focus, OnMsgFocus) | 136 IPC_MESSAGE_HANDLER(ViewHostMsg_Focus, OnMsgFocus) |
136 IPC_MESSAGE_HANDLER(ViewHostMsg_Blur, OnMsgBlur) | 137 IPC_MESSAGE_HANDLER(ViewHostMsg_Blur, OnMsgBlur) |
137 IPC_MESSAGE_HANDLER(ViewHostMsg_FocusedNodeChanged, OnMsgFocusedNodeChanged) | 138 IPC_MESSAGE_HANDLER(ViewHostMsg_FocusedNodeChanged, OnMsgFocusedNodeChanged) |
138 IPC_MESSAGE_HANDLER(ViewHostMsg_SetCursor, OnMsgSetCursor) | 139 IPC_MESSAGE_HANDLER(ViewHostMsg_SetCursor, OnMsgSetCursor) |
139 IPC_MESSAGE_HANDLER(ViewHostMsg_ImeUpdateStatus, OnMsgImeUpdateStatus) | 140 IPC_MESSAGE_HANDLER(ViewHostMsg_ImeUpdateStatus, OnMsgImeUpdateStatus) |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 view_ = NULL; | 274 view_ = NULL; |
274 } | 275 } |
275 | 276 |
276 void RenderWidgetHost::SetIsLoading(bool is_loading) { | 277 void RenderWidgetHost::SetIsLoading(bool is_loading) { |
277 is_loading_ = is_loading; | 278 is_loading_ = is_loading; |
278 if (!view_) | 279 if (!view_) |
279 return; | 280 return; |
280 view_->SetIsLoading(is_loading); | 281 view_->SetIsLoading(is_loading); |
281 } | 282 } |
282 | 283 |
| 284 void RenderWidgetHost::PaintAtSize(TransportDIB::Handle dib_handle, |
| 285 const gfx::Size& size) { |
| 286 // Ask the renderer to create a bitmap regardless of whether it's |
| 287 // hidden, being resized, redrawn, etc., and to scale it by the |
| 288 // scale factor given. |
| 289 Send(new ViewMsg_PaintAtSize(routing_id_, dib_handle, size)); |
| 290 } |
| 291 |
283 BackingStore* RenderWidgetHost::GetBackingStore(bool force_create) { | 292 BackingStore* RenderWidgetHost::GetBackingStore(bool force_create) { |
284 // We should not be asked to paint while we are hidden. If we are hidden, | 293 // We should not be asked to paint while we are hidden. If we are hidden, |
285 // then it means that our consumer failed to call WasRestored. If we're not | 294 // then it means that our consumer failed to call WasRestored. If we're not |
286 // force creating the backing store, it's OK since we can feel free to give | 295 // force creating the backing store, it's OK since we can feel free to give |
287 // out our cached one if we have it. | 296 // out our cached one if we have it. |
288 DCHECK(!is_hidden_ || !force_create) << | 297 DCHECK(!is_hidden_ || !force_create) << |
289 "GetBackingStore called while hidden!"; | 298 "GetBackingStore called while hidden!"; |
290 | 299 |
291 // We should never be called recursively; this can theoretically lead to | 300 // We should never be called recursively; this can theoretically lead to |
292 // infinite recursion and almost certainly leads to lower performance. | 301 // infinite recursion and almost certainly leads to lower performance. |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
669 } | 678 } |
670 | 679 |
671 void RenderWidgetHost::OnMsgRequestMove(const gfx::Rect& pos) { | 680 void RenderWidgetHost::OnMsgRequestMove(const gfx::Rect& pos) { |
672 // Note that we ignore the position. | 681 // Note that we ignore the position. |
673 if (view_) { | 682 if (view_) { |
674 view_->SetSize(pos.size()); | 683 view_->SetSize(pos.size()); |
675 Send(new ViewMsg_Move_ACK(routing_id_)); | 684 Send(new ViewMsg_Move_ACK(routing_id_)); |
676 } | 685 } |
677 } | 686 } |
678 | 687 |
| 688 void RenderWidgetHost::OnMsgPaintAtSizeAck( |
| 689 const TransportDIB::Handle& dib_handle, const gfx::Size& size) { |
| 690 if (painting_observer_) { |
| 691 painting_observer_->WidgetDidReceivePaintAtSizeAck(this, dib_handle, size); |
| 692 } |
| 693 } |
| 694 |
679 void RenderWidgetHost::OnMsgUpdateRect( | 695 void RenderWidgetHost::OnMsgUpdateRect( |
680 const ViewHostMsg_UpdateRect_Params& params) { | 696 const ViewHostMsg_UpdateRect_Params& params) { |
681 TimeTicks paint_start = TimeTicks::Now(); | 697 TimeTicks paint_start = TimeTicks::Now(); |
682 | 698 |
683 // Update our knowledge of the RenderWidget's size. | 699 // Update our knowledge of the RenderWidget's size. |
684 current_size_ = params.view_size; | 700 current_size_ = params.view_size; |
685 | 701 |
686 bool is_resize_ack = | 702 bool is_resize_ack = |
687 ViewHostMsg_UpdateRect_Flags::is_resize_ack(params.flags); | 703 ViewHostMsg_UpdateRect_Flags::is_resize_ack(params.flags); |
688 | 704 |
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1074 // of this key event. | 1090 // of this key event. |
1075 if (!processed && !is_hidden_ && !front_item.skip_in_browser) { | 1091 if (!processed && !is_hidden_ && !front_item.skip_in_browser) { |
1076 UnhandledKeyboardEvent(front_item); | 1092 UnhandledKeyboardEvent(front_item); |
1077 | 1093 |
1078 // WARNING: This RenderWidgetHost can be deallocated at this point | 1094 // WARNING: This RenderWidgetHost can be deallocated at this point |
1079 // (i.e. in the case of Ctrl+W, where the call to | 1095 // (i.e. in the case of Ctrl+W, where the call to |
1080 // UnhandledKeyboardEvent destroys this RenderWidgetHost). | 1096 // UnhandledKeyboardEvent destroys this RenderWidgetHost). |
1081 } | 1097 } |
1082 } | 1098 } |
1083 } | 1099 } |
OLD | NEW |