| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "chrome/browser/google/google_update_win.h" | 5 #include "chrome/browser/google/google_update_win.h" |
| 6 | 6 |
| 7 #include <atlbase.h> | 7 #include <atlbase.h> |
| 8 #include <atlcom.h> | 8 #include <atlcom.h> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 NOTREACHED(); | 169 NOTREACHED(); |
| 170 result_ = UPGRADE_ERROR; | 170 result_ = UPGRADE_ERROR; |
| 171 break; | 171 break; |
| 172 } | 172 } |
| 173 } | 173 } |
| 174 | 174 |
| 175 event_sink_ = NULL; | 175 event_sink_ = NULL; |
| 176 | 176 |
| 177 // No longer need to spin the message loop that started spinning in | 177 // No longer need to spin the message loop that started spinning in |
| 178 // InitiateGoogleUpdateCheck. | 178 // InitiateGoogleUpdateCheck. |
| 179 MessageLoop::current()->Quit(); | 179 base::MessageLoop::current()->Quit(); |
| 180 return S_OK; | 180 return S_OK; |
| 181 } | 181 } |
| 182 STDMETHOD(SetEventSink)(IProgressWndEvents* event_sink) { | 182 STDMETHOD(SetEventSink)(IProgressWndEvents* event_sink) { |
| 183 event_sink_ = event_sink; | 183 event_sink_ = event_sink; |
| 184 return S_OK; | 184 return S_OK; |
| 185 } | 185 } |
| 186 | 186 |
| 187 // Returns the results of the update operation. | 187 // Returns the results of the update operation. |
| 188 STDMETHOD(GetResult)(GoogleUpdateUpgradeResult* result) { | 188 STDMETHOD(GetResult)(GoogleUpdateUpgradeResult* result) { |
| 189 // Intermediary steps should never be reported to the client. | 189 // Intermediary steps should never be reported to the client. |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 | 231 |
| 232 GoogleUpdate::~GoogleUpdate() { | 232 GoogleUpdate::~GoogleUpdate() { |
| 233 } | 233 } |
| 234 | 234 |
| 235 void GoogleUpdate::CheckForUpdate(bool install_if_newer, HWND window) { | 235 void GoogleUpdate::CheckForUpdate(bool install_if_newer, HWND window) { |
| 236 // Need to shunt this request over to InitiateGoogleUpdateCheck and have | 236 // Need to shunt this request over to InitiateGoogleUpdateCheck and have |
| 237 // it run in the file thread. | 237 // it run in the file thread. |
| 238 BrowserThread::PostTask( | 238 BrowserThread::PostTask( |
| 239 BrowserThread::FILE, FROM_HERE, | 239 BrowserThread::FILE, FROM_HERE, |
| 240 base::Bind(&GoogleUpdate::InitiateGoogleUpdateCheck, this, | 240 base::Bind(&GoogleUpdate::InitiateGoogleUpdateCheck, this, |
| 241 install_if_newer, window, MessageLoop::current())); | 241 install_if_newer, window, base::MessageLoop::current())); |
| 242 } | 242 } |
| 243 | 243 |
| 244 //////////////////////////////////////////////////////////////////////////////// | 244 //////////////////////////////////////////////////////////////////////////////// |
| 245 // GoogleUpdate, private: | 245 // GoogleUpdate, private: |
| 246 | 246 |
| 247 void GoogleUpdate::InitiateGoogleUpdateCheck(bool install_if_newer, | 247 void GoogleUpdate::InitiateGoogleUpdateCheck(bool install_if_newer, |
| 248 HWND window, | 248 HWND window, |
| 249 MessageLoop* main_loop) { | 249 base::MessageLoop* main_loop) { |
| 250 base::FilePath chrome_exe; | 250 base::FilePath chrome_exe; |
| 251 if (!PathService::Get(base::DIR_EXE, &chrome_exe)) | 251 if (!PathService::Get(base::DIR_EXE, &chrome_exe)) |
| 252 NOTREACHED(); | 252 NOTREACHED(); |
| 253 | 253 |
| 254 GoogleUpdateErrorCode error_code = CanUpdateCurrentChrome(chrome_exe); | 254 GoogleUpdateErrorCode error_code = CanUpdateCurrentChrome(chrome_exe); |
| 255 if (error_code != GOOGLE_UPDATE_NO_ERROR) { | 255 if (error_code != GOOGLE_UPDATE_NO_ERROR) { |
| 256 main_loop->PostTask( | 256 main_loop->PostTask( |
| 257 FROM_HERE, | 257 FROM_HERE, |
| 258 base::Bind(&GoogleUpdate::ReportResults, this, | 258 base::Bind(&GoogleUpdate::ReportResults, this, |
| 259 UPGRADE_ERROR, error_code, string16())); | 259 UPGRADE_ERROR, error_code, string16())); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 IDS_ABOUT_BOX_ERROR_UPDATE_CHECK_FAILED, | 330 IDS_ABOUT_BOX_ERROR_UPDATE_CHECK_FAILED, |
| 331 error_code), | 331 error_code), |
| 332 main_loop); | 332 main_loop); |
| 333 return; | 333 return; |
| 334 } | 334 } |
| 335 | 335 |
| 336 // Need to spin the message loop while Google Update is running so that it | 336 // Need to spin the message loop while Google Update is running so that it |
| 337 // can report back to us through GoogleUpdateJobObserver. This message loop | 337 // can report back to us through GoogleUpdateJobObserver. This message loop |
| 338 // will terminate once Google Update sends us the completion status | 338 // will terminate once Google Update sends us the completion status |
| 339 // (success/error). See OnComplete(). | 339 // (success/error). See OnComplete(). |
| 340 MessageLoop::current()->Run(); | 340 base::MessageLoop::current()->Run(); |
| 341 | 341 |
| 342 GoogleUpdateUpgradeResult results; | 342 GoogleUpdateUpgradeResult results; |
| 343 hr = job_observer->GetResult(&results); | 343 hr = job_observer->GetResult(&results); |
| 344 | 344 |
| 345 if (hr != S_OK) { | 345 if (hr != S_OK) { |
| 346 GoogleUpdateErrorCode error = GOOGLE_UPDATE_GET_RESULT_CALL_FAILED; | 346 GoogleUpdateErrorCode error = GOOGLE_UPDATE_GET_RESULT_CALL_FAILED; |
| 347 string16 error_code = base::StringPrintf(L"%d: 0x%x", error, hr); | 347 string16 error_code = base::StringPrintf(L"%d: 0x%x", error, hr); |
| 348 ReportFailure(hr, error, | 348 ReportFailure(hr, error, |
| 349 l10n_util::GetStringFUTF16( | 349 l10n_util::GetStringFUTF16( |
| 350 IDS_ABOUT_BOX_ERROR_UPDATE_CHECK_FAILED, | 350 IDS_ABOUT_BOX_ERROR_UPDATE_CHECK_FAILED, |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 error_code == GOOGLE_UPDATE_NO_ERROR); | 388 error_code == GOOGLE_UPDATE_NO_ERROR); |
| 389 if (listener_) { | 389 if (listener_) { |
| 390 listener_->OnReportResults( | 390 listener_->OnReportResults( |
| 391 results, error_code, error_message, version_available_); | 391 results, error_code, error_message, version_available_); |
| 392 } | 392 } |
| 393 } | 393 } |
| 394 | 394 |
| 395 bool GoogleUpdate::ReportFailure(HRESULT hr, | 395 bool GoogleUpdate::ReportFailure(HRESULT hr, |
| 396 GoogleUpdateErrorCode error_code, | 396 GoogleUpdateErrorCode error_code, |
| 397 const string16& error_message, | 397 const string16& error_message, |
| 398 MessageLoop* main_loop) { | 398 base::MessageLoop* main_loop) { |
| 399 NOTREACHED() << "Communication with Google Update failed: " << hr | 399 NOTREACHED() << "Communication with Google Update failed: " << hr |
| 400 << " error: " << error_code | 400 << " error: " << error_code |
| 401 << ", message: " << error_message.c_str(); | 401 << ", message: " << error_message.c_str(); |
| 402 main_loop->PostTask( | 402 main_loop->PostTask( |
| 403 FROM_HERE, | 403 FROM_HERE, |
| 404 base::Bind(&GoogleUpdate::ReportResults, this, | 404 base::Bind(&GoogleUpdate::ReportResults, this, |
| 405 UPGRADE_ERROR, error_code, error_message)); | 405 UPGRADE_ERROR, error_code, error_message)); |
| 406 return false; | 406 return false; |
| 407 } | 407 } |
| OLD | NEW |