Chromium Code Reviews| Index: chrome/browser/chromeos/app_mode/kiosk_app_manager.cc |
| diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc b/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc |
| index e4e7b0e53247c742d6bb9c586895afe3d0e80042..d3762783bb6c8804b914d9a94bb0b04ef6ae8095 100644 |
| --- a/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc |
| +++ b/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc |
| @@ -20,6 +20,7 @@ |
| #include "chrome/browser/chromeos/app_mode/kiosk_app_data.h" |
| #include "chrome/browser/chromeos/app_mode/kiosk_app_external_loader.h" |
| #include "chrome/browser/chromeos/app_mode/kiosk_app_manager_observer.h" |
| +#include "chrome/browser/chromeos/app_mode/kiosk_external_updater.h" |
| #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| #include "chrome/browser/chromeos/policy/device_local_account.h" |
| #include "chrome/browser/chromeos/settings/cros_settings.h" |
| @@ -74,6 +75,7 @@ const char KioskAppManager::kKeyApps[] = "apps"; |
| const char KioskAppManager::kKeyAutoLoginState[] = "auto_login_state"; |
| const char KioskAppManager::kIconCacheDir[] = "kiosk/icon"; |
| const char KioskAppManager::kCrxCacheDir[] = "kiosk/crx"; |
| +const char KioskAppManager::kCrxUnpackDir[] = "kiosk/unpack"; |
|
xiyuan
2014/08/23 18:11:57
We should probably use "/tmp"
jennyz
2014/08/27 00:58:41
Done.
|
| // static |
| static base::LazyInstance<KioskAppManager> instance = LAZY_INSTANCE_INITIALIZER; |
| @@ -370,6 +372,12 @@ bool KioskAppManager::HasCachedCrx(const std::string& app_id) const { |
| return GetCachedCrx(app_id, &crx_path, &version); |
| } |
| +bool KioskAppManager::GetCachedCrx(const std::string& app_id, |
| + base::FilePath* file_path, |
| + std::string* version) const { |
| + return external_cache_->GetExtension(app_id, file_path, version); |
| +} |
| + |
| void KioskAppManager::AddObserver(KioskAppManagerObserver* observer) { |
| observers_.AddObserver(observer); |
| } |
| @@ -407,6 +415,11 @@ void KioskAppManager::UpdateExternalCache() { |
| UpdateAppData(); |
| } |
| +void KioskAppManager::OnKioskAppCacheUpdated(const std::string& app_id) { |
| + FOR_EACH_OBSERVER( |
| + KioskAppManagerObserver, observers_, OnKioskAppCacheUpdated(app_id)); |
| +} |
| + |
| KioskAppManager::KioskAppManager() |
| : ownership_established_(false), external_loader_created_(false) { |
| base::FilePath cache_dir; |
| @@ -431,10 +444,20 @@ KioskAppManager::KioskAppManager() |
| KioskAppManager::~KioskAppManager() {} |
| +void KioskAppManager::MonitorKioskExternalUpdate() { |
| + base::FilePath cache_dir; |
| + GetCrxCacheDir(&cache_dir); |
| + base::FilePath unpack_dir; |
| + GetCrxUnpackDir(&unpack_dir); |
| + usb_stick_updater_ = new KioskExternalUpdater( |
| + GetBackgroundTaskRunner(), cache_dir, unpack_dir); |
| +} |
| + |
| void KioskAppManager::CleanUp() { |
| local_accounts_subscription_.reset(); |
| local_account_auto_login_id_subscription_.reset(); |
| apps_.clear(); |
| + usb_stick_updater_ = NULL; |
| external_cache_.reset(); |
| } |
| @@ -586,10 +609,10 @@ void KioskAppManager::GetCrxCacheDir(base::FilePath* cache_dir) { |
| *cache_dir = user_data_dir.AppendASCII(kCrxCacheDir); |
| } |
| -bool KioskAppManager::GetCachedCrx(const std::string& app_id, |
| - base::FilePath* file_path, |
| - std::string* version) const { |
| - return external_cache_->GetExtension(app_id, file_path, version); |
| +void KioskAppManager::GetCrxUnpackDir(base::FilePath* unpack_dir) { |
| + base::FilePath user_data_dir; |
| + CHECK(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir)); |
| + *unpack_dir = user_data_dir.AppendASCII(kCrxUnpackDir); |
| } |
| } // namespace chromeos |