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

Side by Side Diff: net/bits_utils.cc

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/bits_utils.h ('k') | net/bits_utils_unittest.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-2010 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 #include "omaha/net/bits_utils.h"
17
18 #include <windows.h>
19 #include <winhttp.h>
20 #include <cstring>
21 #include "omaha/base/debug.h"
22 #include "omaha/base/error.h"
23 #include "omaha/base/logging.h"
24 #include "omaha/base/utils.h"
25 #include "omaha/base/scoped_ptr_cotask.h"
26
27 namespace omaha {
28
29 // Gets the instance of BITS manager.
30 HRESULT GetBitsManager(IBackgroundCopyManager** bits_manager) {
31 ASSERT1(bits_manager);
32 if (*bits_manager) {
33 (*bits_manager)->Release();
34 }
35 *bits_manager = NULL;
36
37 CComPtr<IBackgroundCopyManager> object;
38 HRESULT hr = object.CoCreateInstance(__uuidof(BackgroundCopyManager));
39 if (FAILED(hr)) {
40 OPT_LOG(LE, (_T("[failed to get BITS interface][0x%08x]"), hr));
41 const HRESULT kServiceDisabled(HRESULT_FROM_WIN32(ERROR_SERVICE_DISABLED));
42 return (hr == kServiceDisabled) ? CI_E_BITS_DISABLED : hr;
43 }
44 *bits_manager = object.Detach();
45 return S_OK;
46 }
47
48 bool JobLocalNameEqual::operator()(IBackgroundCopyJob* job,
49 const TCHAR* name) const {
50 ASSERT1(job);
51 ASSERT1(name);
52 CComPtr<IEnumBackgroundCopyFiles> files;
53 if (FAILED(job->EnumFiles(&files))) {
54 return false;
55 }
56 ULONG file_count = 0;
57 if (FAILED(files->GetCount(&file_count))) {
58 return false;
59 }
60 for (size_t i = 0; i != file_count; ++i) {
61 CComPtr<IBackgroundCopyFile> file;
62 if (files->Next(1, &file, NULL) == S_OK) {
63 scoped_ptr_cotask<TCHAR> local_name;
64 if (SUCCEEDED(file->GetLocalName(address(local_name)))) {
65 if (_tcscmp(local_name.get(), name) == 0) {
66 return true;
67 }
68 }
69 }
70 }
71 return false;
72 }
73
74 bool JobDisplayNameEqual::operator()(IBackgroundCopyJob* job,
75 const TCHAR* name) const {
76 ASSERT1(job);
77 ASSERT1(name);
78 scoped_ptr_cotask<TCHAR> display_name;
79 HRESULT hr = job->GetDisplayName(address(display_name));
80 if (SUCCEEDED(hr)) {
81 return _tcscmp(display_name.get(), name) == 0;
82 }
83 return false;
84 }
85
86 HRESULT SetProxyAuthImplicitCredentials(IBackgroundCopyJob* job,
87 BG_AUTH_SCHEME auth_scheme) {
88 return SetProxyAuthCredentials(job, NULL, NULL, auth_scheme);
89 }
90
91 HRESULT SetProxyAuthCredentials(IBackgroundCopyJob* job,
92 TCHAR* username,
93 TCHAR* password,
94 BG_AUTH_SCHEME auth_scheme) {
95 ASSERT1(job);
96 CComQIPtr<IBackgroundCopyJob2> job2(job);
97 if (!job2) {
98 return E_NOINTERFACE;
99 }
100 BG_AUTH_CREDENTIALS auth_cred;
101 SetZero(auth_cred);
102 auth_cred.Target = BG_AUTH_TARGET_PROXY;
103 auth_cred.Scheme = auth_scheme;
104 auth_cred.Credentials.Basic.UserName = username;
105 auth_cred.Credentials.Basic.Password = password;
106 return job2->SetCredentials(&auth_cred);
107 }
108
109 int GetHttpStatusFromBitsError(HRESULT error) {
110 // Bits errors are defined in bitsmsg.h. Although not documented, it is
111 // clear that all errors corresponding to http status code have the high
112 // word equal to 0x8019.
113 bool is_valid = HIWORD(error) == 0x8019 &&
114 LOWORD(error) >= HTTP_STATUS_FIRST &&
115 LOWORD(error) <= HTTP_STATUS_LAST;
116 return is_valid ? LOWORD(error) : 0;
117 }
118
119 HRESULT CancelBitsJob(IBackgroundCopyJob* job) {
120 if (job) {
121 BG_JOB_STATE job_state = BG_JOB_STATE_ERROR;
122 HRESULT hr = job->GetState(&job_state);
123 if (SUCCEEDED(hr) &&
124 job_state != BG_JOB_STATE_CANCELLED &&
125 job_state != BG_JOB_STATE_ACKNOWLEDGED) {
126 HRESULT hr = job->Cancel();
127 if (FAILED(hr)) {
128 NET_LOG(LW, (_T("[CancelBitsJob failed][0x%08x]"), hr));
129 }
130 return hr;
131 }
132 }
133 return S_OK;
134 }
135
136 HRESULT PauseBitsJob(IBackgroundCopyJob* job) {
137 if (job) {
138 BG_JOB_STATE job_state = BG_JOB_STATE_ERROR;
139 HRESULT hr = job->GetState(&job_state);
140 if (SUCCEEDED(hr) &&
141 job_state != BG_JOB_STATE_TRANSFERRED &&
142 job_state != BG_JOB_STATE_ACKNOWLEDGED &&
143 job_state != BG_JOB_STATE_CANCELLED) {
144 HRESULT hr = job->Suspend();
145 if (FAILED(hr)) {
146 NET_LOG(LW, (_T("[PauseBitsJob failed][0x%08x]"), hr));
147 }
148 return hr;
149 }
150 }
151 return S_OK;
152 }
153
154 HRESULT ResumeBitsJob(IBackgroundCopyJob* job) {
155 if (job) {
156 BG_JOB_STATE job_state = BG_JOB_STATE_ERROR;
157 HRESULT hr = job->GetState(&job_state);
158 if (SUCCEEDED(hr) && job_state == BG_JOB_STATE_SUSPENDED) {
159 HRESULT hr = job->Suspend();
160 if (FAILED(hr)) {
161 NET_LOG(LW, (_T("[ResumeBitsJob failed][0x%08x]"), hr));
162 }
163 return hr;
164 }
165 }
166 return S_OK;
167 }
168
169 #define RETURN_TSTR(x) case (x): return _T(#x)
170 CString JobStateToString(BG_JOB_STATE job_state) {
171 switch (job_state) {
172 RETURN_TSTR(BG_JOB_STATE_QUEUED);
173 RETURN_TSTR(BG_JOB_STATE_CONNECTING);
174 RETURN_TSTR(BG_JOB_STATE_TRANSFERRING);
175 RETURN_TSTR(BG_JOB_STATE_TRANSIENT_ERROR);
176 RETURN_TSTR(BG_JOB_STATE_ERROR);
177 RETURN_TSTR(BG_JOB_STATE_TRANSFERRED);
178 RETURN_TSTR(BG_JOB_STATE_SUSPENDED);
179 RETURN_TSTR(BG_JOB_STATE_ACKNOWLEDGED);
180 RETURN_TSTR(BG_JOB_STATE_CANCELLED);
181 }
182 return _T("");
183 }
184
185 CString BitsAuthSchemeToString(int auth_scheme) {
186 switch (auth_scheme) {
187 RETURN_TSTR(BG_AUTH_SCHEME_NEGOTIATE);
188 RETURN_TSTR(BG_AUTH_SCHEME_NTLM);
189 RETURN_TSTR(BG_AUTH_SCHEME_DIGEST);
190 RETURN_TSTR(BG_AUTH_SCHEME_BASIC);
191 RETURN_TSTR(0);
192 }
193 return _T("");
194 }
195
196 } // namespace omaha
197
OLDNEW
« no previous file with comments | « net/bits_utils.h ('k') | net/bits_utils_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698