| Index: content/browser/renderer_host/render_view_host_impl.cc
|
| diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc
|
| index 7897b7a4c094ca5a7e5e52747dd712cba7a71024..3981096150728c33fcbb7c3d4a248712f630972b 100644
|
| --- a/content/browser/renderer_host/render_view_host_impl.cc
|
| +++ b/content/browser/renderer_host/render_view_host_impl.cc
|
| @@ -224,6 +224,7 @@ RenderViewHostImpl::RenderViewHostImpl(
|
| virtual_keyboard_requested_(false),
|
| is_focused_element_editable_(false),
|
| updating_web_preferences_(false),
|
| + render_view_ready_on_process_launch_(false),
|
| weak_factory_(this) {
|
| DCHECK(instance_.get());
|
| CHECK(delegate_); // http://crbug.com/82827
|
| @@ -351,6 +352,8 @@ bool RenderViewHostImpl::CreateRenderView(
|
| RenderFrameHostImpl::FromID(GetProcess()->GetID(), main_frame_routing_id_)
|
| ->SetRenderFrameCreated(true);
|
| }
|
| + SendScreenRects();
|
| + PostRenderViewReady();
|
|
|
| return true;
|
| }
|
| @@ -582,6 +585,13 @@ void RenderViewHostImpl::RequestFindMatchRects(int current_version) {
|
| }
|
| #endif
|
|
|
| +void RenderViewHostImpl::RenderProcessReady(RenderProcessHost* host) {
|
| + if (render_view_ready_on_process_launch_) {
|
| + render_view_ready_on_process_launch_ = false;
|
| + RenderViewReady();
|
| + }
|
| +}
|
| +
|
| void RenderViewHostImpl::RenderProcessExited(RenderProcessHost* host,
|
| base::TerminationStatus status,
|
| int exit_code) {
|
| @@ -903,7 +913,6 @@ bool RenderViewHostImpl::OnMessageReceived(const IPC::Message& msg) {
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_ShowWidget, OnShowWidget)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_ShowFullscreenWidget,
|
| OnShowFullscreenWidget)
|
| - IPC_MESSAGE_HANDLER(ViewHostMsg_RenderViewReady, OnRenderViewReady)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateState, OnUpdateState)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateTargetURL, OnUpdateTargetURL)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_Close, OnClose)
|
| @@ -934,6 +943,7 @@ bool RenderViewHostImpl::OnMessageReceived(const IPC::Message& msg) {
|
|
|
| void RenderViewHostImpl::Init() {
|
| RenderWidgetHostImpl::Init();
|
| + PostRenderViewReady();
|
| }
|
|
|
| void RenderViewHostImpl::Shutdown() {
|
| @@ -1022,13 +1032,6 @@ void RenderViewHostImpl::OnShowFullscreenWidget(int route_id) {
|
| Send(new ViewMsg_Move_ACK(route_id));
|
| }
|
|
|
| -void RenderViewHostImpl::OnRenderViewReady() {
|
| - render_view_termination_status_ = base::TERMINATION_STATUS_STILL_RUNNING;
|
| - SendScreenRects();
|
| - WasResized();
|
| - delegate_->RenderViewReady(this);
|
| -}
|
| -
|
| void RenderViewHostImpl::OnRenderProcessGone(int status, int exit_code) {
|
| // Do nothing, otherwise RenderWidgetHostImpl will assume it is not a
|
| // RenderViewHostImpl and destroy itself.
|
| @@ -1426,4 +1429,21 @@ void RenderViewHostImpl::SelectWordAroundCaret() {
|
| Send(new ViewMsg_SelectWordAroundCaret(GetRoutingID()));
|
| }
|
|
|
| +void RenderViewHostImpl::PostRenderViewReady() {
|
| + if (GetProcess()->IsReady()) {
|
| + BrowserThread::PostDelayedTask(
|
| + BrowserThread::UI,
|
| + FROM_HERE,
|
| + base::Bind(&RenderViewHostImpl::RenderViewReady,
|
| + weak_factory_.GetWeakPtr()),
|
| + base::TimeDelta::FromMilliseconds(1000));
|
| + } else {
|
| + render_view_ready_on_process_launch_ = true;
|
| + }
|
| +}
|
| +
|
| +void RenderViewHostImpl::RenderViewReady() {
|
| + delegate_->RenderViewReady(this);
|
| +}
|
| +
|
| } // namespace content
|
|
|