OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #include "chrome/browser/chromeos/app_mode/kiosk_external_updater.h" | 5 #include "chrome/browser/chromeos/app_mode/kiosk_external_updater.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/files/file_enumerator.h" | 8 #include "base/files/file_enumerator.h" |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/json/json_file_value_serializer.h" | 10 #include "base/json/json_file_value_serializer.h" |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 return true; | 86 return true; |
87 else | 87 else |
88 return false; | 88 return false; |
89 } | 89 } |
90 | 90 |
91 } // namespace | 91 } // namespace |
92 | 92 |
93 KioskExternalUpdater::ExternalUpdate::ExternalUpdate() { | 93 KioskExternalUpdater::ExternalUpdate::ExternalUpdate() { |
94 } | 94 } |
95 | 95 |
| 96 KioskExternalUpdater::ExternalUpdate::~ExternalUpdate() { |
| 97 } |
| 98 |
96 KioskExternalUpdater::KioskExternalUpdater( | 99 KioskExternalUpdater::KioskExternalUpdater( |
97 const scoped_refptr<base::SequencedTaskRunner>& backend_task_runner, | 100 const scoped_refptr<base::SequencedTaskRunner>& backend_task_runner, |
98 const base::FilePath& crx_cache_dir, | 101 const base::FilePath& crx_cache_dir, |
99 const base::FilePath& crx_unpack_dir) | 102 const base::FilePath& crx_unpack_dir) |
100 : backend_task_runner_(backend_task_runner), | 103 : backend_task_runner_(backend_task_runner), |
101 crx_cache_dir_(crx_cache_dir), | 104 crx_cache_dir_(crx_cache_dir), |
102 crx_unpack_dir_(crx_unpack_dir), | 105 crx_unpack_dir_(crx_unpack_dir), |
103 weak_factory_(this) { | 106 weak_factory_(this) { |
104 // Subscribe to DiskMountManager. | 107 // Subscribe to DiskMountManager. |
105 DCHECK(disks::DiskMountManager::GetInstance()); | 108 DCHECK(disks::DiskMountManager::GetInstance()); |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 if (!ShouldDoExternalUpdate(app_id, version, min_browser_version)) { | 192 if (!ShouldDoExternalUpdate(app_id, version, min_browser_version)) { |
190 external_updates_[app_id].update_status = FAILED; | 193 external_updates_[app_id].update_status = FAILED; |
191 MaybeValidateNextExternalUpdate(); | 194 MaybeValidateNextExternalUpdate(); |
192 return; | 195 return; |
193 } | 196 } |
194 | 197 |
195 // User might pull out the usb stick before updating is completed. | 198 // User might pull out the usb stick before updating is completed. |
196 if (CheckExternalUpdateInterrupted()) | 199 if (CheckExternalUpdateInterrupted()) |
197 return; | 200 return; |
198 | 201 |
199 base::FilePath external_crx_path = external_updates_[app_id].external_crx; | 202 base::FilePath external_crx_path = |
| 203 external_updates_[app_id].external_crx.path; |
200 base::FilePath temp_crx_path = | 204 base::FilePath temp_crx_path = |
201 crx_unpack_dir_.Append(external_crx_path.BaseName()); | 205 crx_unpack_dir_.Append(external_crx_path.BaseName()); |
202 bool* success = new bool; | 206 bool* success = new bool; |
203 backend_task_runner_->PostTaskAndReply( | 207 backend_task_runner_->PostTaskAndReply( |
204 FROM_HERE, | 208 FROM_HERE, |
205 base::Bind(&CopyExternalCrxAndDeleteTempDir, | 209 base::Bind(&CopyExternalCrxAndDeleteTempDir, |
206 external_crx_path, | 210 external_crx_path, |
207 temp_crx_path, | 211 temp_crx_path, |
208 temp_dir, | 212 temp_dir, |
209 success), | 213 success), |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 } | 288 } |
285 } | 289 } |
286 | 290 |
287 ExternalUpdate update; | 291 ExternalUpdate update; |
288 KioskAppManager::App app; | 292 KioskAppManager::App app; |
289 if (KioskAppManager::Get()->GetApp(app_id, &app)) { | 293 if (KioskAppManager::Get()->GetApp(app_id, &app)) { |
290 update.app_name = app.name; | 294 update.app_name = app.name; |
291 } else { | 295 } else { |
292 NOTREACHED(); | 296 NOTREACHED(); |
293 } | 297 } |
294 update.external_crx = external_update_path_.AppendASCII(external_crx_str); | 298 update.external_crx = extensions::CRXFileInfo( |
| 299 app_id, external_update_path_.AppendASCII(external_crx_str)); |
295 update.update_status = PENDING; | 300 update.update_status = PENDING; |
296 external_updates_[app_id] = update; | 301 external_updates_[app_id] = update; |
297 } | 302 } |
298 | 303 |
299 if (external_updates_.empty()) { | 304 if (external_updates_.empty()) { |
300 NotifyKioskUpdateProgress( | 305 NotifyKioskUpdateProgress( |
301 ui::ResourceBundle::GetSharedInstance().GetLocalizedString( | 306 ui::ResourceBundle::GetSharedInstance().GetLocalizedString( |
302 IDS_KIOSK_EXTERNAL_UPDATE_NO_UPDATES)); | 307 IDS_KIOSK_EXTERNAL_UPDATE_NO_UPDATES)); |
303 KioskAppManager::Get()->OnKioskAppExternalUpdateComplete(false); | 308 KioskAppManager::Get()->OnKioskAppExternalUpdateComplete(false); |
304 return; | 309 return; |
(...skipping 14 matching lines...) Expand all Loading... |
319 return false; | 324 return false; |
320 } | 325 } |
321 | 326 |
322 void KioskExternalUpdater::ValidateExternalUpdates() { | 327 void KioskExternalUpdater::ValidateExternalUpdates() { |
323 for (ExternalUpdateMap::iterator it = external_updates_.begin(); | 328 for (ExternalUpdateMap::iterator it = external_updates_.begin(); |
324 it != external_updates_.end(); | 329 it != external_updates_.end(); |
325 ++it) { | 330 ++it) { |
326 if (it->second.update_status == PENDING) { | 331 if (it->second.update_status == PENDING) { |
327 scoped_refptr<KioskExternalUpdateValidator> crx_validator = | 332 scoped_refptr<KioskExternalUpdateValidator> crx_validator = |
328 new KioskExternalUpdateValidator(backend_task_runner_, | 333 new KioskExternalUpdateValidator(backend_task_runner_, |
329 it->first, | |
330 it->second.external_crx, | 334 it->second.external_crx, |
331 crx_unpack_dir_, | 335 crx_unpack_dir_, |
332 weak_factory_.GetWeakPtr()); | 336 weak_factory_.GetWeakPtr()); |
333 crx_validator->Start(); | 337 crx_validator->Start(); |
334 break; | 338 break; |
335 } | 339 } |
336 } | 340 } |
337 } | 341 } |
338 | 342 |
339 bool KioskExternalUpdater::IsExternalUpdatePending() { | 343 bool KioskExternalUpdater::IsExternalUpdatePending() { |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
422 void KioskExternalUpdater::OnPutValidatedExtension(const std::string& app_id, | 426 void KioskExternalUpdater::OnPutValidatedExtension(const std::string& app_id, |
423 bool success) { | 427 bool success) { |
424 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 428 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
425 if (CheckExternalUpdateInterrupted()) | 429 if (CheckExternalUpdateInterrupted()) |
426 return; | 430 return; |
427 | 431 |
428 if (!success) { | 432 if (!success) { |
429 external_updates_[app_id].update_status = FAILED; | 433 external_updates_[app_id].update_status = FAILED; |
430 external_updates_[app_id].error = l10n_util::GetStringFUTF16( | 434 external_updates_[app_id].error = l10n_util::GetStringFUTF16( |
431 IDS_KIOSK_EXTERNAL_UPDATE_CANNOT_INSTALL_IN_LOCAL_CACHE, | 435 IDS_KIOSK_EXTERNAL_UPDATE_CANNOT_INSTALL_IN_LOCAL_CACHE, |
432 base::UTF8ToUTF16(external_updates_[app_id].external_crx.value())); | 436 base::UTF8ToUTF16(external_updates_[app_id].external_crx.path.value())); |
433 } else { | 437 } else { |
434 external_updates_[app_id].update_status = SUCCESS; | 438 external_updates_[app_id].update_status = SUCCESS; |
435 } | 439 } |
436 | 440 |
437 // Validate the next pending external update. | 441 // Validate the next pending external update. |
438 MaybeValidateNextExternalUpdate(); | 442 MaybeValidateNextExternalUpdate(); |
439 } | 443 } |
440 | 444 |
441 void KioskExternalUpdater::MaybeValidateNextExternalUpdate() { | 445 void KioskExternalUpdater::MaybeValidateNextExternalUpdate() { |
442 if (IsExternalUpdatePending()) | 446 if (IsExternalUpdatePending()) |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
521 if (failed) { | 525 if (failed) { |
522 failed_app_msg = ui::ResourceBundle::GetSharedInstance().GetLocalizedString( | 526 failed_app_msg = ui::ResourceBundle::GetSharedInstance().GetLocalizedString( |
523 IDS_KIOSK_EXTERNAL_UPDATE_FAILED_UPDATED_APPS) + | 527 IDS_KIOSK_EXTERNAL_UPDATE_FAILED_UPDATED_APPS) + |
524 base::ASCIIToUTF16("\n") + failed_apps; | 528 base::ASCIIToUTF16("\n") + failed_apps; |
525 message = message + base::ASCIIToUTF16("\n") + failed_app_msg; | 529 message = message + base::ASCIIToUTF16("\n") + failed_app_msg; |
526 } | 530 } |
527 return message; | 531 return message; |
528 } | 532 } |
529 | 533 |
530 } // namespace chromeos | 534 } // namespace chromeos |
OLD | NEW |