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 a37df89e7ee7638bc03f773960b6e5dadaf6f6b4..d590ff30790d25026027c9ad026b068e5cb4054f 100644 |
--- a/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc |
+++ b/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc |
@@ -465,7 +465,7 @@ void KioskAppManager::RemoveObserver(KioskAppManagerObserver* observer) { |
extensions::ExternalLoader* KioskAppManager::CreateExternalLoader() { |
if (external_loader_created_) { |
NOTREACHED(); |
- return NULL; |
+ return nullptr; |
} |
external_loader_created_ = true; |
KioskAppExternalLoader* loader = new KioskAppExternalLoader(); |
@@ -474,6 +474,19 @@ extensions::ExternalLoader* KioskAppManager::CreateExternalLoader() { |
return loader; |
} |
+extensions::ExternalLoader* |
+KioskAppManager::CreateSecondaryAppExternalLoader() { |
+ if (secondary_app_external_loader_created_) { |
+ NOTREACHED(); |
+ return nullptr; |
+ } |
+ secondary_app_external_loader_created_ = true; |
+ KioskAppExternalLoader* secondary_loader = new KioskAppExternalLoader(); |
+ secondary_app_external_loader_ = secondary_loader->AsWeakPtr(); |
+ |
+ return secondary_loader; |
+} |
+ |
void KioskAppManager::InstallFromCache(const std::string& id) { |
const base::DictionaryValue* extension = NULL; |
if (external_cache_->cached_extensions()->GetDictionary(id, &extension)) { |
@@ -487,6 +500,25 @@ void KioskAppManager::InstallFromCache(const std::string& id) { |
} |
} |
+void KioskAppManager::InstallSecondaryApps( |
+ const std::vector<std::string>& ids) { |
+ if (ids.empty()) |
+ return; |
+ |
+ scoped_ptr<base::DictionaryValue> prefs(new base::DictionaryValue); |
+ for (const std::string& id : ids) { |
+ scoped_ptr<base::DictionaryValue> extension_entry( |
+ new base::DictionaryValue); |
+ extension_entry->SetStringWithoutPathExpansion( |
+ extensions::ExternalProviderImpl::kExternalUpdateUrl, |
+ extension_urls::GetWebstoreUpdateUrl().spec()); |
+ extension_entry->SetBoolean( |
+ extensions::ExternalProviderImpl::kIsFromWebstore, true); |
+ prefs->Set(id, extension_entry.Pass()); |
+ } |
+ secondary_app_external_loader_->SetCurrentAppExtensions(prefs.Pass()); |
+} |
+ |
void KioskAppManager::UpdateExternalCache() { |
UpdateAppData(); |
} |
@@ -511,7 +543,9 @@ void KioskAppManager::PutValidatedExternalExtension( |
} |
KioskAppManager::KioskAppManager() |
- : ownership_established_(false), external_loader_created_(false) { |
+ : ownership_established_(false), |
+ external_loader_created_(false), |
+ secondary_app_external_loader_created_(false) { |
base::FilePath cache_dir; |
GetCrxCacheDir(&cache_dir); |
external_cache_.reset( |