Index: content/browser/tab_contents/tab_contents.cc |
=================================================================== |
--- content/browser/tab_contents/tab_contents.cc (revision 91391) |
+++ content/browser/tab_contents/tab_contents.cc (working copy) |
@@ -201,6 +201,11 @@ |
registrar_.Add(this, NotificationType::RENDER_WIDGET_HOST_DESTROYED, |
NotificationService::AllSources()); |
+ |
+ // Can only add observers after render_manager_.Init() is called, since that's |
+ // what sets up the render_view_host which TabContentObserver's constructor |
+ // uses to get the routing_id. |
+ AddObservers(); |
} |
TabContents::~TabContents() { |
@@ -246,6 +251,8 @@ |
FOR_EACH_OBSERVER(TabContentsObserver, observers_, TabContentsDestroyed()); |
+ net::NetworkChangeNotifier::RemoveOnlineStateObserver(this); |
+ |
set_delegate(NULL); |
} |
@@ -260,6 +267,10 @@ |
delegate_->Attach(this); |
} |
+void TabContents::AddObservers() { |
+ net::NetworkChangeNotifier::AddOnlineStateObserver(this); |
+} |
+ |
bool TabContents::OnMessageReceived(const IPC::Message& message) { |
if (web_ui() && web_ui()->OnMessageReceived(message)) |
return true; |
@@ -1830,3 +1841,8 @@ |
RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh); |
rwh_view->SetSize(view()->GetContainerSize()); |
} |
+ |
+void TabContents::OnOnlineStateChanged(bool online) { |
+ render_view_host()->Send(new ViewMsg_NetworkStateChanged( |
+ render_view_host()->routing_id(), online)); |
+} |