Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(900)

Side by Side Diff: net/winhttp_vtable.h

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/winhttp_adapter_unittest.cc ('k') | net/winhttp_vtable.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2007-2009 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // ========================================================================
15
16 //
17 // WinHttpVTable provides dynamic loading of winhttp.dll.
18
19 // Runtime requirements: WinHTTP 5.1 is now an operating-system component of
20 // the following systems:
21 // - Windows Vista
22 // - Windows Server 2003 family
23 // - Windows XP SP1
24 // - Windows 2000 SP3 (except Datacenter Server)
25
26 #ifndef OMAHA_NET_WINHTTP_VTABLE_H__
27 #define OMAHA_NET_WINHTTP_VTABLE_H__
28
29 #include <windows.h>
30 #include <winhttp.h>
31 #include "omaha/base/debug.h"
32
33 namespace omaha {
34
35 class WinHttpVTable {
36 public:
37 BOOL WinHttpAddRequestHeaders(HINTERNET, const TCHAR*, DWORD, DWORD);
38 BOOL WinHttpCheckPlatform();
39 BOOL WinHttpCloseHandle(HINTERNET);
40 HINTERNET WinHttpConnect(HINTERNET, const TCHAR*, INTERNET_PORT, DWORD);
41 BOOL WinHttpCrackUrl(const TCHAR*, DWORD, DWORD, URL_COMPONENTS*);
42 BOOL WinHttpCreateUrl(URL_COMPONENTS*, DWORD, TCHAR*, DWORD*);
43 BOOL WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO*);
44 BOOL WinHttpGetIEProxyConfigForCurrentUser(
45 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG*);
46 HINTERNET WinHttpOpen(const TCHAR*, DWORD, const TCHAR*, const TCHAR*, DWORD);
47 HINTERNET WinHttpOpenRequest(HINTERNET,
48 const TCHAR*,
49 const TCHAR*,
50 const TCHAR*,
51 const TCHAR*,
52 const TCHAR**,
53 DWORD);
54 BOOL WinHttpQueryAuthSchemes(HINTERNET, DWORD*, DWORD*, DWORD*);
55 BOOL WinHttpQueryDataAvailable(HINTERNET, DWORD*);
56 BOOL WinHttpQueryHeaders(HINTERNET,
57 DWORD,
58 const TCHAR*,
59 void*,
60 DWORD*,
61 DWORD*);
62 BOOL WinHttpQueryOption(HINTERNET, DWORD, void*, DWORD*);
63 BOOL WinHttpReadData(HINTERNET, void*, DWORD, DWORD*);
64 BOOL WinHttpWriteData(HINTERNET, const void*, DWORD, DWORD*);
65 BOOL WinHttpReceiveResponse(HINTERNET, void*);
66 BOOL WinHttpSendRequest(HINTERNET,
67 const TCHAR*,
68 DWORD,
69 void*,
70 DWORD,
71 DWORD,
72 DWORD_PTR);
73 BOOL WinHttpSetCredentials(HINTERNET,
74 DWORD,
75 DWORD,
76 const TCHAR*,
77 const TCHAR*,
78 void*);
79 BOOL WinHttpSetOption(HINTERNET, DWORD, void*, DWORD);
80 WINHTTP_STATUS_CALLBACK WinHttpSetStatusCallback(HINTERNET,
81 WINHTTP_STATUS_CALLBACK,
82 DWORD,
83 DWORD_PTR);
84 BOOL WinHttpSetTimeouts(HINTERNET, int, int, int, int);
85 BOOL WinHttpGetProxyForUrl(HINTERNET,
86 const TCHAR*,
87 WINHTTP_AUTOPROXY_OPTIONS*,
88 WINHTTP_PROXY_INFO*);
89 BOOL WinHttpDetectAutoProxyConfigUrl(DWORD, TCHAR**);
90 BOOL WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO*);
91
92 WinHttpVTable() { Clear(); }
93 ~WinHttpVTable() { Unload(); }
94
95 // Loads library, snap links.
96 bool Load();
97
98 // Unloads library, clear links.
99 void Unload();
100
101 bool IsLoaded() { return NULL != library_; }
102
103 private:
104 void Clear() { memset(this, 0, sizeof(*this)); }
105
106 template <typename T>
107 bool GPA(const char* function_name, T* function_pointer) {
108 ASSERT1(function_name);
109 *function_pointer = reinterpret_cast<T>(::GetProcAddress(library_,
110 function_name));
111 return NULL != *function_pointer;
112 }
113
114 // No good way to keep lines below 80 chars.
115 BOOL (CALLBACK *WinHttpAddRequestHeaders_pointer)(HINTERNET, const TCHAR* , DWORD, DWORD); // NOLINT
116 BOOL (CALLBACK *WinHttpCheckPlatform_pointer)();
117 BOOL (CALLBACK *WinHttpCloseHandle_pointer)(HINTERNET); // NOLINT
118 HINTERNET (CALLBACK *WinHttpConnect_pointer)(HINTERNET, const TCHAR*, INTERNET _PORT, DWORD); // NOLINT
119 BOOL (CALLBACK *WinHttpCrackUrl_pointer)(const TCHAR*, DWORD, DWORD, URL_ COMPONENTS*); // NOLINT
120 BOOL (CALLBACK *WinHttpCreateUrl_pointer)(URL_COMPONENTS*, DWORD, TCHAR*, DWORD*); // NOLINT
121 BOOL (CALLBACK *WinHttpDetectAutoProxyConfigUrl_pointer)(DWORD, TCHAR**); // NOLINT
122 BOOL (CALLBACK *WinHttpGetDefaultProxyConfiguration_pointer)(WINHTTP_PROX Y_INFO*); // NOLINT
123 BOOL (CALLBACK *WinHttpGetIEProxyConfigForCurrentUser_pointer)(WINHTTP_CU RRENT_USER_IE_PROXY_CONFIG* pProxyConfig); // NOLINT
124 BOOL (CALLBACK *WinHttpGetProxyForUrl_pointer)(HINTERNET, const TCHAR*, W INHTTP_AUTOPROXY_OPTIONS*, WINHTTP_PROXY_INFO*); // NOLINT
125 HINTERNET (CALLBACK *WinHttpOpen_pointer)(const TCHAR*, DWORD, const TCHAR*, c onst TCHAR*, DWORD); // NOLINT
126 HINTERNET (CALLBACK *WinHttpOpenRequest_pointer)(HINTERNET, const TCHAR*, cons t TCHAR*, const TCHAR*, const TCHAR*, const TCHAR**, DWORD); // NOLINT
127 BOOL (CALLBACK *WinHttpQueryAuthSchemes_pointer)(HINTERNET, DWORD*, DWORD *, DWORD*); // NOLINT
128 BOOL (CALLBACK *WinHttpQueryDataAvailable_pointer)(HINTERNET, DWORD*); // NOLINT
129 BOOL (CALLBACK *WinHttpQueryHeaders_pointer)(HINTERNET, DWORD, const TCHA R*, void*, DWORD*, DWORD*); // NOLINT
130 BOOL (CALLBACK *WinHttpQueryOption_pointer)(HINTERNET, DWORD, void*, DWOR D*); // NOLINT
131 BOOL (CALLBACK *WinHttpReadData_pointer)(HINTERNET, void*, DWORD, DWORD*) ; // NOLINT
132 BOOL (CALLBACK *WinHttpReceiveResponse_pointer)(HINTERNET, void*); // NOLINT
133 BOOL (CALLBACK *WinHttpSendRequest_pointer)(HINTERNET, const TCHAR*, DWOR D, void*, DWORD, DWORD, DWORD_PTR); // NOLINT
134 BOOL (CALLBACK *WinHttpSetCredentials_pointer)(HINTERNET, DWORD, DWORD, c onst TCHAR*, const TCHAR*, void*); // NOLINT
135 BOOL (CALLBACK *WinHttpSetDefaultProxyConfiguration_pointer)(WINHTTP_PROX Y_INFO*); // NOLINT
136 BOOL (CALLBACK *WinHttpSetOption_pointer)(HINTERNET, DWORD, void*, DWORD) ; // NOLINT
137 BOOL (CALLBACK *WinHttpSetTimeouts_pointer)(HINTERNET, int, int, int, int ); // NOLINT
138 BOOL (CALLBACK *WinHttpWriteData_pointer)(HINTERNET, LPCVOID, DWORD, DWOR D*); // NOLINT
139 WINHTTP_STATUS_CALLBACK (CALLBACK *WinHttpSetStatusCallback_pointer)(HINTERNET , WINHTTP_STATUS_CALLBACK, DWORD, DWORD_PTR); // NOLINT
140
141 HINSTANCE library_;
142
143 DISALLOW_EVIL_CONSTRUCTORS(WinHttpVTable);
144 };
145
146 #define PROTECT_WRAP(function, proto, call, result_type, result_error_value) \
147 inline result_type WinHttpVTable::function proto { \
148 return function##_pointer call; \
149 }
150
151 // No good way to keep lines below 80 chars.
152 PROTECT_WRAP(WinHttpAddRequestHeaders, (HINTERNET a, const TCHAR* b, DWORD c, DW ORD d), (a, b, c, d), BOOL, FALSE); // NOLINT
153 PROTECT_WRAP(WinHttpCheckPlatform, (), (), BOOL, FALSE);
154 PROTECT_WRAP(WinHttpCloseHandle, (HINTERNET a), (a), BOOL, FALSE); // NOLINT
155 PROTECT_WRAP(WinHttpConnect, (HINTERNET a, const TCHAR* b, INTERNET_PORT c, DWOR D d), (a, b, c, d), HINTERNET, NULL); // NOLINT
156 PROTECT_WRAP(WinHttpCrackUrl, (const TCHAR* a, DWORD b, DWORD c, LPURL_COMPONENT S d), (a, b, c, d), BOOL, FALSE); // NOLINT
157 PROTECT_WRAP(WinHttpCreateUrl, (URL_COMPONENTS* a, DWORD b, TCHAR* c, DWORD* d), (a, b, c, d), BOOL, FALSE); // NOLINT
158 PROTECT_WRAP(WinHttpDetectAutoProxyConfigUrl, (DWORD a, TCHAR** b), (a, b), BOOL , FALSE); // NOLINT
159 PROTECT_WRAP(WinHttpGetDefaultProxyConfiguration, (WINHTTP_PROXY_INFO* a), (a), BOOL, FALSE); // NOLINT
160 PROTECT_WRAP(WinHttpGetIEProxyConfigForCurrentUser, (WINHTTP_CURRENT_USER_IE_PRO XY_CONFIG* a), (a), BOOL, FALSE); // NOLINT
161 PROTECT_WRAP(WinHttpGetProxyForUrl, (HINTERNET a, const TCHAR* b, WINHTTP_AUTOPR OXY_OPTIONS* c, WINHTTP_PROXY_INFO* d), (a, b, c, d), BOOL, FALSE); // NOLINT
162 PROTECT_WRAP(WinHttpOpen, (const TCHAR* a, DWORD b, const TCHAR* c, const TCHAR* d, DWORD e), (a, b, c, d, e), HINTERNET, NULL); // NOLINT
163 PROTECT_WRAP(WinHttpOpenRequest, (HINTERNET a, const TCHAR* b, const TCHAR* c, c onst TCHAR* d, const TCHAR* e, const TCHAR** f, DWORD g), (a, b, c, d, e, f, g), HINTERNET, NULL); // NOLINT
164 PROTECT_WRAP(WinHttpQueryAuthSchemes, (HINTERNET a, DWORD* b, DWORD* c, DWORD* d ), (a, b, c, d), BOOL, FALSE); // NOLINT
165 PROTECT_WRAP(WinHttpQueryDataAvailable, (HINTERNET a, DWORD* b), (a, b), BOOL, F ALSE); // NOLINT
166 PROTECT_WRAP(WinHttpQueryHeaders, (HINTERNET a, DWORD b, const TCHAR* c, void* d , DWORD* e, DWORD* f), (a, b, c, d, e, f), BOOL, FALSE); // NOLINT
167 PROTECT_WRAP(WinHttpQueryOption, (HINTERNET a, DWORD b, void* c, DWORD* d), (a, b, c, d), BOOL, FALSE); // NOLINT
168 PROTECT_WRAP(WinHttpReadData, (HINTERNET a, void* b, DWORD c, DWORD* d), (a, b, c, d), BOOL, FALSE); // NOLINT
169 PROTECT_WRAP(WinHttpReceiveResponse, (HINTERNET a, void* b), (a, b), BOOL, FALSE ); // NOLINT
170 PROTECT_WRAP(WinHttpSendRequest, (HINTERNET a, const TCHAR* b, DWORD c, void* d, DWORD e, DWORD f, DWORD_PTR g), (a, b, c, d, e, f, g), BOOL, FALSE); // NOLI NT
171 PROTECT_WRAP(WinHttpSetCredentials, (HINTERNET a, DWORD b, DWORD c, const TCHAR* d, const TCHAR* e, void* f), (a, b, c, d, e, f), BOOL, FALSE); // NOLINT
172 PROTECT_WRAP(WinHttpSetDefaultProxyConfiguration, (WINHTTP_PROXY_INFO* a), (a), BOOL, FALSE); // NOLINT
173 PROTECT_WRAP(WinHttpSetOption, (HINTERNET a, DWORD b, void* c, DWORD d), (a, b, c, d), BOOL, FALSE); // NOLINT
174 PROTECT_WRAP(WinHttpSetStatusCallback, (HINTERNET a, WINHTTP_STATUS_CALLBACK b, DWORD c, DWORD_PTR d), (a, b, c, d), WINHTTP_STATUS_CALLBACK, WINHTTP_INVALID_ST ATUS_CALLBACK); // NOLINT
175 PROTECT_WRAP(WinHttpSetTimeouts, (HINTERNET a, int b, int c, int d, int e), (a, b, c, d, e), BOOL, FALSE); // NOLINT
176 PROTECT_WRAP(WinHttpWriteData, (HINTERNET a, LPCVOID b, DWORD c, DWORD* d), (a, b, c, d), BOOL, FALSE); // NOLINT
177
178 } // namespace omaha
179
180 #endif // OMAHA_NET_WINHTTP_VTABLE_H__
181
OLDNEW
« no previous file with comments | « net/winhttp_adapter_unittest.cc ('k') | net/winhttp_vtable.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698