Sends NetworkChangeNotifier connection type changes to Blink, to support NetInfo v3.
Design doc: https://docs.google.com/a/chromium.org/document/d/1LTk9uVMGi4kurzcF5ellsAJReTF31fFJMHrQwSVtBjc/
BUG=368358
Review URL: https://codereview.chromium.org/298803006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@273555 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/renderer/net_info_helper.cc b/content/renderer/net_info_helper.cc
new file mode 100644
index 0000000..8e0d651
--- /dev/null
+++ b/content/renderer/net_info_helper.cc
@@ -0,0 +1,31 @@
+// Copyright 2014 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/renderer/net_info_helper.h"
+
+namespace content {
+
+blink::WebConnectionType
+NetConnectionTypeToWebConnectionType(
+ net::NetworkChangeNotifier::ConnectionType net_type) {
+ switch (net_type) {
+ case net::NetworkChangeNotifier::CONNECTION_UNKNOWN:
+ return blink::ConnectionTypeOther;
+ case net::NetworkChangeNotifier::CONNECTION_ETHERNET:
+ return blink::ConnectionTypeEthernet;
+ case net::NetworkChangeNotifier::CONNECTION_WIFI:
+ return blink::ConnectionTypeWifi;
+ case net::NetworkChangeNotifier::CONNECTION_NONE:
+ return blink::ConnectionTypeNone;
+ case net::NetworkChangeNotifier::CONNECTION_2G:
+ case net::NetworkChangeNotifier::CONNECTION_3G:
+ case net::NetworkChangeNotifier::CONNECTION_4G:
+ return blink::ConnectionTypeCellular;
+ }
+
+ NOTREACHED();
+ return blink::ConnectionTypeNone;
+}
+
+} // namespace content
diff --git a/content/renderer/net_info_helper.h b/content/renderer/net_info_helper.h
new file mode 100644
index 0000000..a9e19a0
--- /dev/null
+++ b/content/renderer/net_info_helper.h
@@ -0,0 +1,18 @@
+// Copyright 2014 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_PUBLIC_RENDERER_NET_INFO_HELPER_H_
+#define CONTENT_PUBLIC_RENDERER_NET_INFO_HELPER_H_
+
+#include "net/base/network_change_notifier.h"
+#include "third_party/WebKit/public/platform/WebConnectionType.h"
+
+namespace content {
+
+blink::WebConnectionType NetConnectionTypeToWebConnectionType(
+ net::NetworkChangeNotifier::ConnectionType type);
+
+} // namespace content
+
+#endif // CONTENT_PUBLIC_RENDERER_NET_INFO_HELPER_H_
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 0ba3585..b8d82f45 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -84,6 +84,7 @@
#include "content/renderer/media/video_capture_message_filter.h"
#include "content/renderer/media/webrtc/peer_connection_dependency_factory.h"
#include "content/renderer/media/webrtc_identity_service.h"
+#include "content/renderer/net_info_helper.h"
#include "content/renderer/p2p/socket_dispatcher.h"
#include "content/renderer/render_process_impl.h"
#include "content/renderer/render_view_impl.h"
@@ -1358,11 +1359,15 @@
FOR_EACH_OBSERVER(RenderProcessObserver, observers_, PluginListChanged());
}
-void RenderThreadImpl::OnNetworkStateChanged(bool online) {
+void RenderThreadImpl::OnNetworkStateChanged(
+ bool online,
+ net::NetworkChangeNotifier::ConnectionType type) {
EnsureWebKitInitialized();
WebNetworkStateNotifier::setOnLine(online);
- FOR_EACH_OBSERVER(RenderProcessObserver, observers_,
- NetworkStateChanged(online));
+ FOR_EACH_OBSERVER(
+ RenderProcessObserver, observers_, NetworkStateChanged(online));
+ WebNetworkStateNotifier::setWebConnectionType(
+ NetConnectionTypeToWebConnectionType(type));
}
void RenderThreadImpl::OnTempCrashWithData(const GURL& data) {
diff --git a/content/renderer/render_thread_impl.h b/content/renderer/render_thread_impl.h
index d6c3a89..778c95b 100644
--- a/content/renderer/render_thread_impl.h
+++ b/content/renderer/render_thread_impl.h
@@ -20,6 +20,8 @@
#include "content/common/content_export.h"
#include "content/common/gpu/client/gpu_channel_host.h"
#include "content/public/renderer/render_thread.h"
+#include "net/base/network_change_notifier.h"
+#include "third_party/WebKit/public/platform/WebConnectionType.h"
#include "ui/gfx/native_widget_types.h"
#if defined(OS_MACOSX)
@@ -88,6 +90,7 @@
class MediaStreamCenter;
class PeerConnectionDependencyFactory;
class MidiMessageFilter;
+class NetInfoDispatcher;
class P2PSocketDispatcher;
class PeerConnectionTracker;
class RendererDemuxerAndroid;
@@ -429,7 +432,8 @@
void OnCreateNewView(const ViewMsg_New_Params& params);
void OnTransferBitmap(const SkBitmap& bitmap, int resource_id);
void OnPurgePluginListCache(bool reload_pages);
- void OnNetworkStateChanged(bool online);
+ void OnNetworkStateChanged(bool online,
+ net::NetworkChangeNotifier::ConnectionType type);
void OnGetAccessibilityTree();
void OnTempCrashWithData(const GURL& data);
void OnUpdateTimezone();
diff --git a/content/renderer/web_preferences.cc b/content/renderer/web_preferences.cc
index 3500236..33a0004 100644
--- a/content/renderer/web_preferences.cc
+++ b/content/renderer/web_preferences.cc
@@ -5,6 +5,8 @@
#include "content/public/renderer/web_preferences.h"
#include "base/strings/utf_string_conversions.h"
+#include "content/renderer/net_info_helper.h"
+#include "third_party/WebKit/public/platform/WebConnectionType.h"
#include "third_party/WebKit/public/platform/WebString.h"
#include "third_party/WebKit/public/platform/WebURL.h"
#include "third_party/WebKit/public/web/WebKit.h"
@@ -325,6 +327,8 @@
#endif
WebNetworkStateNotifier::setOnLine(prefs.is_online);
+ WebNetworkStateNotifier::setWebConnectionType(
+ NetConnectionTypeToWebConnectionType(prefs.connection_type));
settings->setPinchVirtualViewportEnabled(
prefs.pinch_virtual_viewport_enabled);