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 |