diff options
author | adamk@chromium.org <adamk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-12 21:15:09 +0000 |
---|---|---|
committer | adamk@chromium.org <adamk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-12 21:15:09 +0000 |
commit | 6eac57a601d0f2e88390609b5716c08eb5f19b73 (patch) | |
tree | 6038bcdc6309799c2c7375fd9a72dc79ff80dac4 /content/browser/net | |
parent | b32c028c0bbcd40cc74067968a0aebb4a52a3bd7 (diff) | |
download | chromium_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.cc | 24 | ||||
-rw-r--r-- | content/browser/net/browser_online_state_observer.h | 27 |
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_ |