Enumerate layered service providers and namespace providers under Windows and display them on a new net-internals tab.  On other OSes, the new tab is always hidden.

BUG=53474
TEST=manual

Review URL: http://codereview.chromium.org/3329016

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59364 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/net/service_providers_win.h b/chrome/browser/net/service_providers_win.h
new file mode 100644
index 0000000..39687cd
--- /dev/null
+++ b/chrome/browser/net/service_providers_win.h
@@ -0,0 +1,41 @@
+// Copyright (c) 2010 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 CHROME_BROWSER_NET_SERVICE_PROVIDERS_WIN_H_
+#define CHROME_BROWSER_NET_SERVICE_PROVIDERS_WIN_H_
+#pragma once
+
+#include <vector>
+
+class Value;
+
+struct WinsockNamespaceProvider {
+  std::wstring name;
+  int version;
+  bool active;
+  int type;
+};
+typedef std::vector<WinsockNamespaceProvider> WinsockNamespaceProviderList;
+
+struct WinsockLayeredServiceProvider {
+  std::wstring name;
+  std::wstring path;
+  int version;
+  int chain_length;
+  int socket_type;
+  int socket_protocol;
+};
+typedef std::vector<WinsockLayeredServiceProvider>
+    WinsockLayeredServiceProviderList;
+
+// Returns all the Winsock namespace providers.
+void GetWinsockNamespaceProviders(
+    WinsockNamespaceProviderList* namespace_list);
+
+// Returns all the Winsock layered service providers and their paths.
+void GetWinsockLayeredServiceProviders(
+    WinsockLayeredServiceProviderList* service_list);
+
+#endif  // CHROME_BROWSER_NET_SERVICE_PROVIDERS_WIN_H_
+