summaryrefslogtreecommitdiffstats
path: root/content/browser/tab_contents/tab_contents.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/tab_contents/tab_contents.cc')
-rw-r--r--content/browser/tab_contents/tab_contents.cc16
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));
+}