| OLD | NEW | 
|---|
| 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef NET_BASE_NET_UTIL_WIN_H_ | 5 #ifndef NET_BASE_NET_UTIL_WIN_H_ | 
| 6 #define NET_BASE_NET_UTIL_WIN_H_ | 6 #define NET_BASE_NET_UTIL_WIN_H_ | 
| 7 | 7 | 
| 8 // This file is only used to expose some of the internals | 8 // This file is only used to expose some of the internals | 
| 9 // of net_util_win.cc to tests. | 9 // of net_util_win.cc to tests. | 
| 10 | 10 | 
| 11 #include <wlanapi.h> | 11 #include <wlanapi.h> | 
| 12 | 12 | 
| 13 #include "base/win/scoped_handle.h" | 13 #include "base/win/scoped_handle.h" | 
| 14 #include "net/base/net_export.h" | 14 #include "net/base/net_export.h" | 
| 15 | 15 | 
| 16 namespace net { | 16 namespace net { | 
| 17 namespace internal { | 17 namespace internal { | 
| 18 | 18 | 
| 19 struct NET_EXPORT WlanApi { | 19 struct NET_EXPORT WlanApi { | 
| 20   typedef DWORD (WINAPI *WlanOpenHandleFunc)( | 20   typedef DWORD(WINAPI* WlanOpenHandleFunc)(DWORD, VOID*, DWORD*, HANDLE*); | 
| 21       DWORD, VOID*, DWORD*, HANDLE*); | 21   typedef DWORD(WINAPI* WlanEnumInterfacesFunc)(HANDLE, | 
| 22   typedef DWORD (WINAPI *WlanEnumInterfacesFunc)( | 22                                                 VOID*, | 
| 23       HANDLE, VOID*, WLAN_INTERFACE_INFO_LIST**); | 23                                                 WLAN_INTERFACE_INFO_LIST**); | 
| 24   typedef DWORD (WINAPI *WlanQueryInterfaceFunc)( | 24   typedef DWORD(WINAPI* WlanQueryInterfaceFunc)(HANDLE, | 
| 25       HANDLE, const GUID*, WLAN_INTF_OPCODE, VOID*, DWORD*, VOID**, | 25                                                 const GUID*, | 
| 26       WLAN_OPCODE_VALUE_TYPE*); | 26                                                 WLAN_INTF_OPCODE, | 
| 27   typedef DWORD (WINAPI *WlanSetInterfaceFunc)( | 27                                                 VOID*, | 
| 28       HANDLE, const GUID*, WLAN_INTF_OPCODE, DWORD, const VOID*, VOID*); | 28                                                 DWORD*, | 
| 29   typedef VOID (WINAPI *WlanFreeMemoryFunc)(VOID*); | 29                                                 VOID**, | 
| 30   typedef DWORD (WINAPI *WlanCloseHandleFunc)(HANDLE, VOID*); | 30                                                 WLAN_OPCODE_VALUE_TYPE*); | 
|  | 31   typedef DWORD(WINAPI* WlanSetInterfaceFunc)(HANDLE, | 
|  | 32                                               const GUID*, | 
|  | 33                                               WLAN_INTF_OPCODE, | 
|  | 34                                               DWORD, | 
|  | 35                                               const VOID*, | 
|  | 36                                               VOID*); | 
|  | 37   typedef VOID(WINAPI* WlanFreeMemoryFunc)(VOID*); | 
|  | 38   typedef DWORD(WINAPI* WlanCloseHandleFunc)(HANDLE, VOID*); | 
| 31 | 39 | 
| 32   WlanApi(); | 40   WlanApi(); | 
| 33   static WlanApi& GetInstance(); | 41   static WlanApi& GetInstance(); | 
| 34 | 42 | 
| 35   template <typename T> | 43   template <typename T> | 
| 36   DWORD OpenHandle(DWORD client_version, DWORD* cur_version, T* handle) const { | 44   DWORD OpenHandle(DWORD client_version, DWORD* cur_version, T* handle) const { | 
| 37     HANDLE temp_handle; | 45     HANDLE temp_handle; | 
| 38     DWORD result = open_handle_func(client_version, NULL, cur_version, | 46     DWORD result = | 
| 39                                     &temp_handle); | 47         open_handle_func(client_version, NULL, cur_version, &temp_handle); | 
| 40     if (result != ERROR_SUCCESS) | 48     if (result != ERROR_SUCCESS) | 
| 41       return result; | 49       return result; | 
| 42     handle->Set(temp_handle); | 50     handle->Set(temp_handle); | 
| 43     return ERROR_SUCCESS; | 51     return ERROR_SUCCESS; | 
| 44   } | 52   } | 
| 45 | 53 | 
| 46   HMODULE module; | 54   HMODULE module; | 
| 47   WlanOpenHandleFunc open_handle_func; | 55   WlanOpenHandleFunc open_handle_func; | 
| 48   WlanEnumInterfacesFunc enum_interfaces_func; | 56   WlanEnumInterfacesFunc enum_interfaces_func; | 
| 49   WlanQueryInterfaceFunc query_interface_func; | 57   WlanQueryInterfaceFunc query_interface_func; | 
| 50   WlanSetInterfaceFunc set_interface_func; | 58   WlanSetInterfaceFunc set_interface_func; | 
| 51   WlanFreeMemoryFunc free_memory_func; | 59   WlanFreeMemoryFunc free_memory_func; | 
| 52   WlanCloseHandleFunc close_handle_func; | 60   WlanCloseHandleFunc close_handle_func; | 
| 53   bool initialized; | 61   bool initialized; | 
| 54 }; | 62 }; | 
| 55 | 63 | 
| 56 struct WlanApiHandleTraits { | 64 struct WlanApiHandleTraits { | 
| 57   typedef HANDLE Handle; | 65   typedef HANDLE Handle; | 
| 58 | 66 | 
| 59   static bool CloseHandle(HANDLE handle) { | 67   static bool CloseHandle(HANDLE handle) { | 
| 60     return WlanApi::GetInstance().close_handle_func(handle, NULL) == | 68     return WlanApi::GetInstance().close_handle_func(handle, NULL) == | 
| 61         ERROR_SUCCESS; | 69            ERROR_SUCCESS; | 
| 62   } | 70   } | 
| 63   static bool IsHandleValid(HANDLE handle) { | 71   static bool IsHandleValid(HANDLE handle) { | 
| 64     return base::win::HandleTraits::IsHandleValid(handle); | 72     return base::win::HandleTraits::IsHandleValid(handle); | 
| 65   } | 73   } | 
| 66   static HANDLE NullHandle() { | 74   static HANDLE NullHandle() { return base::win::HandleTraits::NullHandle(); } | 
| 67     return base::win::HandleTraits::NullHandle(); |  | 
| 68   } |  | 
| 69 }; | 75 }; | 
| 70 | 76 | 
| 71 typedef base::win::GenericScopedHandle< | 77 typedef base::win::GenericScopedHandle<WlanApiHandleTraits, | 
| 72   WlanApiHandleTraits, | 78                                        base::win::DummyVerifierTraits> | 
| 73   base::win::DummyVerifierTraits> WlanHandle; | 79     WlanHandle; | 
| 74 | 80 | 
| 75 struct WlanApiDeleter { | 81 struct WlanApiDeleter { | 
| 76   inline void operator()(void* ptr) const { | 82   inline void operator()(void* ptr) const { | 
| 77     WlanApi::GetInstance().free_memory_func(ptr); | 83     WlanApi::GetInstance().free_memory_func(ptr); | 
| 78   } | 84   } | 
| 79 }; | 85 }; | 
| 80 | 86 | 
| 81 }  // namespace internal | 87 }  // namespace internal | 
| 82 | 88 | 
| 83 }  // namespace net | 89 }  // namespace net | 
| 84 | 90 | 
| 85 #endif   // NET_BASE_NET_UTIL_WIN_H_ | 91 #endif  // NET_BASE_NET_UTIL_WIN_H_ | 
| OLD | NEW | 
|---|