Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: content/browser/renderer_host/render_widget_host_impl.cc

Issue 23129015: Initialize RenderWidget(Host)(View)s with correct visibility state (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 // static 108 // static
109 size_t RenderWidgetHost::BackingStoreMemorySize() { 109 size_t RenderWidgetHost::BackingStoreMemorySize() {
110 return BackingStoreManager::MemorySize(); 110 return BackingStoreManager::MemorySize();
111 } 111 }
112 112
113 /////////////////////////////////////////////////////////////////////////////// 113 ///////////////////////////////////////////////////////////////////////////////
114 // RenderWidgetHostImpl 114 // RenderWidgetHostImpl
115 115
116 RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate, 116 RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate,
117 RenderProcessHost* process, 117 RenderProcessHost* process,
118 int routing_id) 118 int routing_id,
119 bool hidden)
119 : view_(NULL), 120 : view_(NULL),
120 renderer_initialized_(false), 121 renderer_initialized_(false),
121 hung_renderer_delay_ms_(kHungRendererDelayMs), 122 hung_renderer_delay_ms_(kHungRendererDelayMs),
122 delegate_(delegate), 123 delegate_(delegate),
123 process_(process), 124 process_(process),
124 routing_id_(routing_id), 125 routing_id_(routing_id),
125 surface_id_(0), 126 surface_id_(0),
126 is_loading_(false), 127 is_loading_(false),
127 is_hidden_(false), 128 is_hidden_(hidden),
128 is_fullscreen_(false), 129 is_fullscreen_(false),
129 is_accelerated_compositing_active_(false), 130 is_accelerated_compositing_active_(false),
130 repaint_ack_pending_(false), 131 repaint_ack_pending_(false),
131 resize_ack_pending_(false), 132 resize_ack_pending_(false),
132 overdraw_bottom_height_(0.f), 133 overdraw_bottom_height_(0.f),
133 should_auto_resize_(false), 134 should_auto_resize_(false),
134 waiting_for_screen_rects_ack_(false), 135 waiting_for_screen_rects_ack_(false),
135 accessibility_mode_(AccessibilityModeOff), 136 accessibility_mode_(AccessibilityModeOff),
136 needs_repainting_on_restore_(false), 137 needs_repainting_on_restore_(false),
137 is_unresponsive_(false), 138 is_unresponsive_(false),
(...skipping 30 matching lines...) Expand all
168 process_->GetID(), 169 process_->GetID(),
169 routing_id_); 170 routing_id_);
170 DCHECK(surface_id_); 171 DCHECK(surface_id_);
171 } 172 }
172 173
173 is_threaded_compositing_enabled_ = IsThreadedCompositingEnabled(); 174 is_threaded_compositing_enabled_ = IsThreadedCompositingEnabled();
174 175
175 g_routing_id_widget_map.Get().insert(std::make_pair( 176 g_routing_id_widget_map.Get().insert(std::make_pair(
176 RenderWidgetHostID(process->GetID(), routing_id_), this)); 177 RenderWidgetHostID(process->GetID(), routing_id_), this));
177 process_->AddRoute(routing_id_, this); 178 process_->AddRoute(routing_id_, this);
178 // Because the widget initializes as is_hidden_ == false, 179
179 // tell the process host that we're alive. 180 // If we're initially visible, tell the process host that we're alive.
180 process_->WidgetRestored(); 181 // Otherwise we'll notify the process host when we are first shown.
182 if (!hidden)
183 process_->WidgetRestored();
181 184
182 accessibility_mode_ = 185 accessibility_mode_ =
183 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode(); 186 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode();
184 187
185 for (size_t i = 0; i < g_created_callbacks.Get().size(); i++) 188 for (size_t i = 0; i < g_created_callbacks.Get().size(); i++)
186 g_created_callbacks.Get().at(i).Run(this); 189 g_created_callbacks.Get().at(i).Run(this);
187 190
188 input_router_.reset(new ImmediateInputRouter(process, this, routing_id_)); 191 input_router_.reset(new ImmediateInputRouter(process, this, routing_id_));
189 192
190 #if defined(USE_AURA) 193 #if defined(USE_AURA)
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 } 475 }
473 476
474 bool RenderWidgetHostImpl::Send(IPC::Message* msg) { 477 bool RenderWidgetHostImpl::Send(IPC::Message* msg) {
475 if (IPC_MESSAGE_ID_CLASS(msg->type()) == InputMsgStart) 478 if (IPC_MESSAGE_ID_CLASS(msg->type()) == InputMsgStart)
476 return input_router_->SendInput(msg); 479 return input_router_->SendInput(msg);
477 480
478 return process_->Send(msg); 481 return process_->Send(msg);
479 } 482 }
480 483
481 void RenderWidgetHostImpl::WasHidden() { 484 void RenderWidgetHostImpl::WasHidden() {
485 if (is_hidden_)
486 return;
487
482 is_hidden_ = true; 488 is_hidden_ = true;
483 489
484 // Don't bother reporting hung state when we aren't active. 490 // Don't bother reporting hung state when we aren't active.
485 StopHangMonitorTimeout(); 491 StopHangMonitorTimeout();
486 492
487 // If we have a renderer, then inform it that we are being hidden so it can 493 // If we have a renderer, then inform it that we are being hidden so it can
488 // reduce its resource utilization. 494 // reduce its resource utilization.
489 Send(new ViewMsg_WasHidden(routing_id_)); 495 Send(new ViewMsg_WasHidden(routing_id_));
490 496
491 // Tell the RenderProcessHost we were hidden. 497 // Tell the RenderProcessHost we were hidden.
492 process_->WidgetHidden(); 498 process_->WidgetHidden();
493 499
494 bool is_visible = false; 500 bool is_visible = false;
495 NotificationService::current()->Notify( 501 NotificationService::current()->Notify(
496 NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED, 502 NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED,
497 Source<RenderWidgetHost>(this), 503 Source<RenderWidgetHost>(this),
498 Details<bool>(&is_visible)); 504 Details<bool>(&is_visible));
499 } 505 }
500 506
501 void RenderWidgetHostImpl::WasShown() { 507 void RenderWidgetHostImpl::WasShown() {
502 // When we create the widget, it is created as *not* hidden.
503 if (!is_hidden_) 508 if (!is_hidden_)
504 return; 509 return;
505 is_hidden_ = false; 510 is_hidden_ = false;
506 511
507 SendScreenRects(); 512 SendScreenRects();
508 513
509 BackingStore* backing_store = BackingStoreManager::Lookup(this); 514 BackingStore* backing_store = BackingStoreManager::Lookup(this);
510 // If we already have a backing store for this widget, then we don't need to 515 // If we already have a backing store for this widget, then we don't need to
511 // repaint on restore _unless_ we know that our backing store is invalid. 516 // repaint on restore _unless_ we know that our backing store is invalid.
512 // When accelerated compositing is on, we must always repaint, even when 517 // When accelerated compositing is on, we must always repaint, even when
(...skipping 1963 matching lines...) Expand 10 before | Expand all | Expand 10 after
2476 int process_id = (b->first.second >> 32) & 0xffffffff; 2481 int process_id = (b->first.second >> 32) & 0xffffffff;
2477 RenderWidgetHost* rwh = 2482 RenderWidgetHost* rwh =
2478 RenderWidgetHost::FromID(process_id, routing_id); 2483 RenderWidgetHost::FromID(process_id, routing_id);
2479 if (!rwh) 2484 if (!rwh)
2480 continue; 2485 continue;
2481 RenderWidgetHostImpl::From(rwh)->FrameSwapped(latency_info); 2486 RenderWidgetHostImpl::From(rwh)->FrameSwapped(latency_info);
2482 } 2487 }
2483 } 2488 }
2484 2489
2485 } // namespace content 2490 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_impl.h ('k') | content/browser/renderer_host/render_widget_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698