diff options
Diffstat (limited to 'content/browser/tab_contents/tab_contents.cc')
-rw-r--r-- | content/browser/tab_contents/tab_contents.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/content/browser/tab_contents/tab_contents.cc b/content/browser/tab_contents/tab_contents.cc index e83fc69..c2ca82d 100644 --- a/content/browser/tab_contents/tab_contents.cc +++ b/content/browser/tab_contents/tab_contents.cc @@ -201,6 +201,11 @@ TabContents::TabContents(Profile* profile, 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 @@ TabContents::~TabContents() { FOR_EACH_OBSERVER(TabContentsObserver, observers_, TabContentsDestroyed()); + net::NetworkChangeNotifier::RemoveOnlineStateObserver(this); + set_delegate(NULL); } @@ -260,6 +267,10 @@ void TabContents::set_delegate(TabContentsDelegate* delegate) { 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 @@ void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { 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)); +} |