summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-22 23:15:27 +0000
committerevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-22 23:15:27 +0000
commit439a23813d24262f7d66b1d551a6d77db0072722 (patch)
tree41fc06e025eda2b4dfd996bbcf4d96b567552fe9
parent013f3065b739ecffb04792805e6edc0429886fb6 (diff)
downloadchromium_src-439a23813d24262f7d66b1d551a6d77db0072722.zip
chromium_src-439a23813d24262f7d66b1d551a6d77db0072722.tar.gz
chromium_src-439a23813d24262f7d66b1d551a6d77db0072722.tar.bz2
Revert "Don't send resize messages until the renderer has been initialized."
This reverts commit r14260. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14267 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc12
-rw-r--r--chrome/browser/renderer_host/render_view_host.h6
-rw-r--r--chrome/browser/renderer_host/render_widget_host.cc13
-rw-r--r--chrome/browser/renderer_host/render_widget_host.h8
-rw-r--r--chrome/browser/tab_contents/tab_contents_view.h4
-rw-r--r--chrome/browser/tab_contents/tab_contents_view_gtk.cc7
-rw-r--r--chrome/browser/tab_contents/tab_contents_view_gtk.h2
-rw-r--r--chrome/browser/tab_contents/tab_contents_view_mac.h1
-rw-r--r--chrome/browser/tab_contents/tab_contents_view_mac.mm4
-rw-r--r--chrome/browser/tab_contents/tab_contents_view_win.cc4
-rw-r--r--chrome/browser/tab_contents/tab_contents_view_win.h1
-rw-r--r--chrome/browser/tab_contents/web_contents.cc2
12 files changed, 43 insertions, 21 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 76b8d5a..aa1b78c 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -92,6 +92,7 @@ RenderViewHost::RenderViewHost(SiteInstance* instance,
: RenderWidgetHost(instance->GetProcess(), routing_id),
instance_(instance),
delegate_(delegate),
+ renderer_initialized_(false),
waiting_for_drag_context_response_(false),
debugger_attached_(false),
enabled_bindings_(0),
@@ -199,6 +200,11 @@ bool RenderViewHost::IsRenderViewLive() const {
return process()->channel() && renderer_initialized_;
}
+void RenderViewHost::Init() {
+ RenderWidgetHost::Init();
+ renderer_initialized_ = true;
+}
+
void RenderViewHost::NavigateToEntry(const NavigationEntry& entry,
bool is_reload) {
ViewMsg_Navigate_Params params;
@@ -860,9 +866,13 @@ void RenderViewHost::OnMsgRenderViewReady() {
}
void RenderViewHost::OnMsgRenderViewGone() {
- // Our base class RenderWidgetHost needs to reset some stuff.
+ // Our base class RenderWidgetHouse needs to reset some stuff.
RendererExited();
+ // Clearing this flag causes us to re-create the renderer when recovering
+ // from a crashed renderer.
+ renderer_initialized_ = false;
+
delegate_->RenderViewGone(this);
OnDebugDisconnect();
}
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index 976a434..e6e7ad11 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -424,6 +424,7 @@ class RenderViewHost : public RenderWidgetHost {
void WindowMoveOrResizeStarted();
// RenderWidgetHost public overrides.
+ virtual void Init();
virtual void Shutdown();
virtual bool IsRenderView() { return true; }
virtual void OnMessageReceived(const IPC::Message& msg);
@@ -591,6 +592,11 @@ class RenderViewHost : public RenderWidgetHost {
HostPersonalization personalization_;
#endif
+ // true if a renderer has once been valid. We use this flag to display a sad
+ // tab only when we lose our renderer and not if a paint occurs during
+ // initialization.
+ bool renderer_initialized_;
+
// true if we are currently waiting for a response for drag context
// information.
bool waiting_for_drag_context_response_;
diff --git a/chrome/browser/renderer_host/render_widget_host.cc b/chrome/browser/renderer_host/render_widget_host.cc
index 64fb609..dd14812 100644
--- a/chrome/browser/renderer_host/render_widget_host.cc
+++ b/chrome/browser/renderer_host/render_widget_host.cc
@@ -47,8 +47,7 @@ static const int kHungRendererDelayMs = 20000;
RenderWidgetHost::RenderWidgetHost(RenderProcessHost* process,
int routing_id)
- : renderer_initialized_(false),
- view_(NULL),
+ : view_(NULL),
process_(process),
routing_id_(routing_id),
is_loading_(false),
@@ -82,8 +81,6 @@ RenderWidgetHost::~RenderWidgetHost() {
void RenderWidgetHost::Init() {
DCHECK(process_->channel());
- renderer_initialized_ = true;
-
// Send the ack along with the information on placement.
gfx::NativeView plugin_view = view_->GetPluginNativeView();
Send(new ViewMsg_CreatingNew_ACK(routing_id_,
@@ -162,10 +159,8 @@ void RenderWidgetHost::WasRestored() {
}
void RenderWidgetHost::WasResized() {
- if (resize_ack_pending_ || !process_->channel() || !view_ ||
- !renderer_initialized_) {
+ if (resize_ack_pending_ || !process_->channel() || !view_)
return;
- }
gfx::Rect view_bounds = view_->GetViewBounds();
gfx::Size new_size(view_bounds.width(), view_bounds.height());
@@ -352,10 +347,6 @@ void RenderWidgetHost::ForwardInputEvent(const WebInputEvent& input_event,
}
void RenderWidgetHost::RendererExited() {
- // Clearing this flag causes us to re-create the renderer when recovering
- // from a crashed renderer.
- renderer_initialized_ = false;
-
// Must reset these to ensure that mouse move events work with a new renderer.
mouse_move_pending_ = false;
next_mouse_move_.reset();
diff --git a/chrome/browser/renderer_host/render_widget_host.h b/chrome/browser/renderer_host/render_widget_host.h
index ad81ad8..b6fd4d0 100644
--- a/chrome/browser/renderer_host/render_widget_host.h
+++ b/chrome/browser/renderer_host/render_widget_host.h
@@ -142,7 +142,7 @@ class RenderWidgetHost : public IPC::Channel::Listener {
// Called when a renderer object already been created for this host, and we
// just need to be attached to it. Used for window.open, <select> dropdown
// menus, and other times when the renderer initiates creating an object.
- void Init();
+ virtual void Init();
// Tells the renderer to die and then calls Destroy().
virtual void Shutdown();
@@ -282,12 +282,6 @@ class RenderWidgetHost : public IPC::Channel::Listener {
virtual void NotifyRendererUnresponsive() {}
virtual void NotifyRendererResponsive() {}
- protected:
- // true if a renderer has once been valid. We use this flag to display a sad
- // tab only when we lose our renderer and not if a paint occurs during
- // initialization.
- bool renderer_initialized_;
-
private:
FRIEND_TEST(RenderWidgetHostTest, Resize);
FRIEND_TEST(RenderWidgetHostTest, HiddenPaint);
diff --git a/chrome/browser/tab_contents/tab_contents_view.h b/chrome/browser/tab_contents/tab_contents_view.h
index 7095bf8..2a17dff 100644
--- a/chrome/browser/tab_contents/tab_contents_view.h
+++ b/chrome/browser/tab_contents/tab_contents_view.h
@@ -124,6 +124,10 @@ class TabContentsView : public RenderViewHostDelegate::View {
// invoked, SetInitialFocus is invoked.
virtual void RestoreFocus() = 0;
+ // Sets children's size. May involve packing them in order to get the
+ // toolkit to send them resize events.
+ virtual void SetChildSize(RenderWidgetHostView* rwh_view) = 0;
+
protected:
TabContentsView() {} // Abstract interface.
diff --git a/chrome/browser/tab_contents/tab_contents_view_gtk.cc b/chrome/browser/tab_contents/tab_contents_view_gtk.cc
index 6c6bc30..7262d19 100644
--- a/chrome/browser/tab_contents/tab_contents_view_gtk.cc
+++ b/chrome/browser/tab_contents/tab_contents_view_gtk.cc
@@ -101,7 +101,6 @@ RenderWidgetHostView* TabContentsViewGtk::CreateViewForWidget(
g_signal_connect(view->native_view(), "button-press-event",
G_CALLBACK(OnMouseDown), this);
gfx::RemoveAllChildren(vbox_.get());
- gtk_box_pack_start(GTK_BOX(vbox_.get()), content_view_, TRUE, TRUE, 0);
return view;
}
@@ -187,6 +186,12 @@ void TabContentsViewGtk::RestoreFocus() {
NOTIMPLEMENTED() << " -- need to restore the focus position on this page.";
}
+void TabContentsViewGtk::SetChildSize(RenderWidgetHostView* rwh_view) {
+ // Packing the gtk widget in a container will cause a configure-event to be
+ // sent to the widget.
+ gtk_box_pack_start(GTK_BOX(vbox_.get()), content_view_, TRUE, TRUE, 0);
+}
+
void TabContentsViewGtk::UpdateDragCursor(bool is_drop_target) {
NOTIMPLEMENTED();
}
diff --git a/chrome/browser/tab_contents/tab_contents_view_gtk.h b/chrome/browser/tab_contents/tab_contents_view_gtk.h
index 08c4388..94c60c4 100644
--- a/chrome/browser/tab_contents/tab_contents_view_gtk.h
+++ b/chrome/browser/tab_contents/tab_contents_view_gtk.h
@@ -43,6 +43,7 @@ class TabContentsViewGtk : public TabContentsView {
virtual void SetInitialFocus();
virtual void StoreFocus();
virtual void RestoreFocus();
+ virtual void SetChildSize(RenderWidgetHostView* rwh_view);
// Backend implementation of RenderViewHostDelegate::View.
virtual void ShowContextMenu(const ContextMenuParams& params);
@@ -55,6 +56,7 @@ class TabContentsViewGtk : public TabContentsView {
const gfx::Rect& selection_rect,
int active_match_ordinal,
bool final_update);
+
private:
// We keep track of the timestamp of the latest mousedown event.
static gboolean OnMouseDown(GtkWidget* widget,
diff --git a/chrome/browser/tab_contents/tab_contents_view_mac.h b/chrome/browser/tab_contents/tab_contents_view_mac.h
index ae40894..920fd76 100644
--- a/chrome/browser/tab_contents/tab_contents_view_mac.h
+++ b/chrome/browser/tab_contents/tab_contents_view_mac.h
@@ -58,6 +58,7 @@ class TabContentsViewMac : public TabContentsView,
virtual void SetInitialFocus();
virtual void StoreFocus();
virtual void RestoreFocus();
+ virtual void SetChildSize(RenderWidgetHostView* rwh_view);
// Backend implementation of RenderViewHostDelegate::View.
virtual RenderWidgetHostView* CreateNewWidgetInternal(int route_id,
diff --git a/chrome/browser/tab_contents/tab_contents_view_mac.mm b/chrome/browser/tab_contents/tab_contents_view_mac.mm
index d7e4398..291c73c 100644
--- a/chrome/browser/tab_contents/tab_contents_view_mac.mm
+++ b/chrome/browser/tab_contents/tab_contents_view_mac.mm
@@ -160,6 +160,10 @@ void TabContentsViewMac::RestoreFocus() {
// TODO(port)
}
+void TabContentsViewMac::SetChildSize(RenderWidgetHostView* rwh_view) {
+ rwh_view->SetSize(GetContainerSize());
+}
+
void TabContentsViewMac::UpdateDragCursor(bool is_drop_target) {
NOTIMPLEMENTED();
}
diff --git a/chrome/browser/tab_contents/tab_contents_view_win.cc b/chrome/browser/tab_contents/tab_contents_view_win.cc
index f5f3d96..3278c60 100644
--- a/chrome/browser/tab_contents/tab_contents_view_win.cc
+++ b/chrome/browser/tab_contents/tab_contents_view_win.cc
@@ -310,6 +310,10 @@ void TabContentsViewWin::RestoreFocus() {
}
}
+void TabContentsViewWin::SetChildSize(RenderWidgetHostView* rwh_view) {
+ rwh_view->SetSize(GetContainerSize());
+}
+
void TabContentsViewWin::UpdateDragCursor(bool is_drop_target) {
drop_target_->set_is_drop_target(is_drop_target);
}
diff --git a/chrome/browser/tab_contents/tab_contents_view_win.h b/chrome/browser/tab_contents/tab_contents_view_win.h
index 8ef2765..227dfa5 100644
--- a/chrome/browser/tab_contents/tab_contents_view_win.h
+++ b/chrome/browser/tab_contents/tab_contents_view_win.h
@@ -43,6 +43,7 @@ class TabContentsViewWin : public TabContentsView,
virtual void SetInitialFocus();
virtual void StoreFocus();
virtual void RestoreFocus();
+ virtual void SetChildSize(RenderWidgetHostView* rwh_view);
// Backend implementation of RenderViewHostDelegate::View.
virtual void ShowContextMenu(const ContextMenuParams& params);
diff --git a/chrome/browser/tab_contents/web_contents.cc b/chrome/browser/tab_contents/web_contents.cc
index dcd566c..6236f6a 100644
--- a/chrome/browser/tab_contents/web_contents.cc
+++ b/chrome/browser/tab_contents/web_contents.cc
@@ -1559,7 +1559,7 @@ bool WebContents::CreateRenderViewForRenderManager(
return false;
// Now that the RenderView has been created, we need to tell it its size.
- rwh_view->SetSize(view_->GetContainerSize());
+ view_->SetChildSize(rwh_view);
UpdateMaxPageIDIfNecessary(render_view_host->site_instance(),
render_view_host);