1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CHROME_BROWSER_EXTENSIONS_API_SYSTEM_NETWORK_SYSTEM_NETWORK_API_H_
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CHROME_BROWSER_EXTENSIONS_API_SYSTEM_NETWORK_SYSTEM_NETWORK_API_H_
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/common/extensions/api/system_network.h"
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/browser/extension_function.h"
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "net/base/net_util.h"
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace extensions {
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace api {
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class SystemNetworkGetNetworkInterfacesFunction
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    : public AsyncExtensionFunction {
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public:
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  DECLARE_EXTENSION_FUNCTION("system.network.getNetworkInterfaces",
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                             SYSTEM_NETWORK_GETNETWORKINTERFACES)
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SystemNetworkGetNetworkInterfacesFunction();
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) protected:
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual ~SystemNetworkGetNetworkInterfacesFunction();
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // AsyncApiFunction:
27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual bool RunAsync() OVERRIDE;
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private:
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void GetListOnFileThread();
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void HandleGetListError();
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void SendResponseOnUIThread(const net::NetworkInterfaceList& interface_list);
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace api
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace extensions
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif  // CHROME_BROWSER_EXTENSIONS_API_SYSTEM_NETWORK_SYSTEM_NETWORK_API_H_
39