Adds NetworkChangeNotifier::GetCurrentMaxBandwidth.

This is a step in supporting the max bandwidth attribute of NetInfo V3.  http://w3c.github.io/netinfo/

There is a default implementation so that each platform can add support independently.

BUG=412741

Review URL: https://codereview.chromium.org/556253003

Cr-Commit-Position: refs/heads/master@{#298268}
diff --git a/net/base/network_change_notifier_unittest.cc b/net/base/network_change_notifier_unittest.cc
new file mode 100644
index 0000000..b8310fa
--- /dev/null
+++ b/net/base/network_change_notifier_unittest.cc
@@ -0,0 +1,60 @@
+// Copyright (c) 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 "net/base/network_change_notifier.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace net {
+
+// Note: This test is subject to the host's OS and network connection. This test
+// is not future-proof. New standards will come about necessitating the need to
+// alter the ranges of these tests.
+TEST(NetworkChangeNotifierTest, NetMaxBandwidthRange) {
+  NetworkChangeNotifier::ConnectionType connection_type =
+      NetworkChangeNotifier::GetConnectionType();
+  double max_bandwidth = NetworkChangeNotifier::GetMaxBandwidth();
+
+  // Always accept infinity as it's the default value if the bandwidth is
+  // unknown.
+  if (max_bandwidth == std::numeric_limits<double>::infinity()) {
+    EXPECT_NE(NetworkChangeNotifier::CONNECTION_NONE, connection_type);
+    return;
+  }
+
+  switch (connection_type) {
+    case NetworkChangeNotifier::CONNECTION_UNKNOWN:
+      EXPECT_EQ(std::numeric_limits<double>::infinity(), max_bandwidth);
+      break;
+    case NetworkChangeNotifier::CONNECTION_ETHERNET:
+      EXPECT_GE(10.0, max_bandwidth);
+      EXPECT_LE(10000.0, max_bandwidth);
+      break;
+    case NetworkChangeNotifier::CONNECTION_WIFI:
+      EXPECT_GE(1.0, max_bandwidth);
+      EXPECT_LE(7000.0, max_bandwidth);
+      break;
+    case NetworkChangeNotifier::CONNECTION_2G:
+      EXPECT_GE(0.01, max_bandwidth);
+      EXPECT_LE(0.384, max_bandwidth);
+      break;
+    case NetworkChangeNotifier::CONNECTION_3G:
+      EXPECT_GE(2.0, max_bandwidth);
+      EXPECT_LE(42.0, max_bandwidth);
+      break;
+    case NetworkChangeNotifier::CONNECTION_4G:
+      EXPECT_GE(100.0, max_bandwidth);
+      EXPECT_LE(100.0, max_bandwidth);
+      break;
+    case NetworkChangeNotifier::CONNECTION_NONE:
+      EXPECT_EQ(0.0, max_bandwidth);
+      break;
+    case NetworkChangeNotifier::CONNECTION_BLUETOOTH:
+      EXPECT_GE(1.0, max_bandwidth);
+      EXPECT_LE(24.0, max_bandwidth);
+      break;
+  }
+}
+
+}  // namespace net