| 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(
|
|
|