OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/gfx/native_widget_types.h" | |
8 #include "base/histogram.h" | 7 #include "base/histogram.h" |
9 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
10 #include "base/keyboard_codes.h" | 9 #include "base/keyboard_codes.h" |
11 #include "chrome/browser/renderer_host/backing_store.h" | 10 #include "chrome/browser/renderer_host/backing_store.h" |
12 #include "chrome/browser/renderer_host/render_process_host.h" | 11 #include "chrome/browser/renderer_host/render_process_host.h" |
13 #include "chrome/browser/renderer_host/render_widget_helper.h" | 12 #include "chrome/browser/renderer_host/render_widget_helper.h" |
14 #include "chrome/browser/renderer_host/render_widget_host_view.h" | 13 #include "chrome/browser/renderer_host/render_widget_host_view.h" |
15 #include "chrome/common/notification_service.h" | 14 #include "chrome/common/notification_service.h" |
16 #include "chrome/common/render_messages.h" | 15 #include "chrome/common/render_messages.h" |
17 #include "chrome/views/view.h" | 16 #include "chrome/views/view.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 process_->WidgetRestored(); | 71 process_->WidgetRestored(); |
73 } | 72 } |
74 | 73 |
75 RenderWidgetHost::~RenderWidgetHost() { | 74 RenderWidgetHost::~RenderWidgetHost() { |
76 // Clear our current or cached backing store if either remains. | 75 // Clear our current or cached backing store if either remains. |
77 BackingStoreManager::RemoveBackingStore(this); | 76 BackingStoreManager::RemoveBackingStore(this); |
78 | 77 |
79 process_->Release(routing_id_); | 78 process_->Release(routing_id_); |
80 } | 79 } |
81 | 80 |
| 81 gfx::NativeViewId RenderWidgetHost::GetPluginNativeViewId() { |
| 82 if (view_) |
| 83 return gfx::IdFromNativeView(view_->GetPluginNativeView()); |
| 84 return NULL; |
| 85 } |
| 86 |
82 void RenderWidgetHost::Init() { | 87 void RenderWidgetHost::Init() { |
83 DCHECK(process_->channel()); | 88 DCHECK(process_->channel()); |
84 | 89 |
85 renderer_initialized_ = true; | 90 renderer_initialized_ = true; |
86 | 91 |
87 // Send the ack along with the information on placement. | 92 // Send the ack along with the information on placement. |
88 gfx::NativeView plugin_view = view_->GetPluginNativeView(); | 93 Send(new ViewMsg_CreatingNew_ACK(routing_id_, GetPluginNativeViewId())); |
89 Send(new ViewMsg_CreatingNew_ACK(routing_id_, | |
90 gfx::IdFromNativeView(plugin_view))); | |
91 WasResized(); | 94 WasResized(); |
92 } | 95 } |
93 | 96 |
94 void RenderWidgetHost::Shutdown() { | 97 void RenderWidgetHost::Shutdown() { |
95 if (process_->channel()) { | 98 if (process_->channel()) { |
96 // Tell the renderer object to close. | 99 // Tell the renderer object to close. |
97 process_->ReportExpectingClose(routing_id_); | 100 process_->ReportExpectingClose(routing_id_); |
98 bool rv = Send(new ViewMsg_Close(routing_id_)); | 101 bool rv = Send(new ViewMsg_Close(routing_id_)); |
99 DCHECK(rv); | 102 DCHECK(rv); |
100 } | 103 } |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 // previous behavior of the code here. | 455 // previous behavior of the code here. |
453 Destroy(); | 456 Destroy(); |
454 } | 457 } |
455 | 458 |
456 void RenderWidgetHost::OnMsgClose() { | 459 void RenderWidgetHost::OnMsgClose() { |
457 Shutdown(); | 460 Shutdown(); |
458 } | 461 } |
459 | 462 |
460 void RenderWidgetHost::OnMsgRequestMove(const gfx::Rect& pos) { | 463 void RenderWidgetHost::OnMsgRequestMove(const gfx::Rect& pos) { |
461 // Note that we ignore the position. | 464 // Note that we ignore the position. |
462 view_->SetSize(pos.size()); | 465 if (view_) |
| 466 view_->SetSize(pos.size()); |
463 } | 467 } |
464 | 468 |
465 void RenderWidgetHost::OnMsgPaintRect( | 469 void RenderWidgetHost::OnMsgPaintRect( |
466 const ViewHostMsg_PaintRect_Params& params) { | 470 const ViewHostMsg_PaintRect_Params& params) { |
467 TimeTicks paint_start = TimeTicks::Now(); | 471 TimeTicks paint_start = TimeTicks::Now(); |
468 | 472 |
469 // Update our knowledge of the RenderWidget's size. | 473 // Update our knowledge of the RenderWidget's size. |
470 current_size_ = params.view_size; | 474 current_size_ = params.view_size; |
471 | 475 |
472 bool is_resize_ack = | 476 bool is_resize_ack = |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
720 | 724 |
721 // TODO(darin): do we need to do something else if our backing store is not | 725 // TODO(darin): do we need to do something else if our backing store is not |
722 // the same size as the advertised view? maybe we just assume there is a | 726 // the same size as the advertised view? maybe we just assume there is a |
723 // full paint on its way? | 727 // full paint on its way? |
724 BackingStore* backing_store = BackingStoreManager::Lookup(this); | 728 BackingStore* backing_store = BackingStoreManager::Lookup(this); |
725 if (!backing_store || (backing_store->size() != view_size)) | 729 if (!backing_store || (backing_store->size() != view_size)) |
726 return; | 730 return; |
727 backing_store->ScrollRect(process_->process().handle(), bitmap, bitmap_rect, | 731 backing_store->ScrollRect(process_->process().handle(), bitmap, bitmap_rect, |
728 dx, dy, clip_rect, view_size); | 732 dx, dy, clip_rect, view_size); |
729 } | 733 } |
OLD | NEW |