summaryrefslogtreecommitdiffstats
path: root/content/browser/net
diff options
context:
space:
mode:
authoradamk@chromium.org <adamk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-12 21:15:09 +0000
committeradamk@chromium.org <adamk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-12 21:15:09 +0000
commit6eac57a601d0f2e88390609b5716c08eb5f19b73 (patch)
tree6038bcdc6309799c2c7375fd9a72dc79ff80dac4 /content/browser/net
parentb32c028c0bbcd40cc74067968a0aebb4a52a3bd7 (diff)
downloadchromium_src-6eac57a601d0f2e88390609b5716c08eb5f19b73.zip
chromium_src-6eac57a601d0f2e88390609b5716c08eb5f19b73.tar.gz
chromium_src-6eac57a601d0f2e88390609b5716c08eb5f19b73.tar.bz2
Convert ViewMsg_NetworkStateChanged from routed -> control,
minimizing the number of required IPCs (since the online state is a per-WebKit singleton). In doing so, I've disentangled online state management from TabContents: it now resides off by itself in BrowserOnlineStateObserver, a tiny class owned by BrowserProcessImpl. This is an attempt to re-land r91390 without the OnProcessLaunched IPC (since r92062 solved that in a different way by using WebPreferences). The previous commit was reverted due to missing message_loop.h includes. R=darin@chromium.org Review URL: http://codereview.chromium.org/7343011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92233 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/net')
-rw-r--r--content/browser/net/browser_online_state_observer.cc24
-rw-r--r--content/browser/net/browser_online_state_observer.h27
2 files changed, 51 insertions, 0 deletions
diff --git a/content/browser/net/browser_online_state_observer.cc b/content/browser/net/browser_online_state_observer.cc
new file mode 100644
index 0000000..2b0ccd8
--- /dev/null
+++ b/content/browser/net/browser_online_state_observer.cc
@@ -0,0 +1,24 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/net/browser_online_state_observer.h"
+
+#include "content/browser/renderer_host/render_process_host.h"
+#include "content/common/view_messages.h"
+#include "net/base/network_change_notifier.h"
+
+BrowserOnlineStateObserver::BrowserOnlineStateObserver() {
+ net::NetworkChangeNotifier::AddOnlineStateObserver(this);
+}
+
+BrowserOnlineStateObserver::~BrowserOnlineStateObserver() {
+ net::NetworkChangeNotifier::RemoveOnlineStateObserver(this);
+}
+
+void BrowserOnlineStateObserver::OnOnlineStateChanged(bool online) {
+ for (RenderProcessHost::iterator it(RenderProcessHost::AllHostsIterator());
+ !it.IsAtEnd(); it.Advance()) {
+ it.GetCurrentValue()->Send(new ViewMsg_NetworkStateChanged(online));
+ }
+}
diff --git a/content/browser/net/browser_online_state_observer.h b/content/browser/net/browser_online_state_observer.h
new file mode 100644
index 0000000..1e5e71a
--- /dev/null
+++ b/content/browser/net/browser_online_state_observer.h
@@ -0,0 +1,27 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_NET_BROWSER_ONLINE_STATE_OBSERVER_H_
+#define CONTENT_BROWSER_NET_BROWSER_ONLINE_STATE_OBSERVER_H_
+#pragma once
+
+#include "base/basictypes.h"
+#include "net/base/network_change_notifier.h"
+
+// Listens for changes to the online state and manages sending
+// updates to each RenderProcess via RenderProcessHost IPC.
+class BrowserOnlineStateObserver
+ : public net::NetworkChangeNotifier::OnlineStateObserver {
+ public:
+ BrowserOnlineStateObserver();
+ virtual ~BrowserOnlineStateObserver();
+
+ // OnlineStateObserver implementation.
+ virtual void OnOnlineStateChanged(bool online);
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(BrowserOnlineStateObserver);
+};
+
+#endif // CONTENT_BROWSER_NET_BROWSER_ONLINE_STATE_OBSERVER_H_