| Index: chrome/browser/chromeos/customization_document.cc
|
| diff --git a/chrome/browser/chromeos/customization_document.cc b/chrome/browser/chromeos/customization_document.cc
|
| index e0248d9065bf5417029a013d00bff4ce0c85179c..99d7d82bff3edf4999734377bcece14d89c73016 100644
|
| --- a/chrome/browser/chromeos/customization_document.cc
|
| +++ b/chrome/browser/chromeos/customization_document.cc
|
| @@ -25,6 +25,8 @@
|
| #include "chrome/browser/extensions/external_loader.h"
|
| #include "chrome/browser/extensions/external_provider_impl.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/browser/ui/app_list/app_list_syncable_service.h"
|
| +#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h"
|
| #include "chrome/common/extensions/extension_constants.h"
|
| #include "chromeos/network/network_state.h"
|
| #include "chromeos/network/network_state_handler.h"
|
| @@ -53,6 +55,8 @@ const char kSetupContentAttr[] = "setup_content";
|
| const char kEulaPageAttr[] = "eula_page";
|
| const char kDefaultWallpaperAttr[] = "default_wallpaper";
|
| const char kDefaultAppsAttr[] = "default_apps";
|
| +const char kLocalizedContent[] = "localized_content";
|
| +const char kDefaultAppsFolderName[] = "default_apps_folder_name";
|
|
|
| const char kAcceptedManifestVersion[] = "1.0";
|
|
|
| @@ -93,6 +97,32 @@ void LogManifestLoadResult(HistogramServicesCustomizationLoadResult result) {
|
| HISTOGRAM_LOAD_RESULT_MAX_VALUE);
|
| }
|
|
|
| +std::string GetLocaleSpecificStringImpl(
|
| + const base::DictionaryValue* root,
|
| + const std::string& locale,
|
| + const std::string& dictionary_name,
|
| + const std::string& entry_name) {
|
| + const base::DictionaryValue* dictionary_content = NULL;
|
| + if (!root || !root->GetDictionary(dictionary_name, &dictionary_content))
|
| + return std::string();
|
| +
|
| + const base::DictionaryValue* locale_dictionary = NULL;
|
| + if (dictionary_content->GetDictionary(locale, &locale_dictionary)) {
|
| + std::string result;
|
| + if (locale_dictionary->GetString(entry_name, &result))
|
| + return result;
|
| + }
|
| +
|
| + const base::DictionaryValue* default_dictionary = NULL;
|
| + if (dictionary_content->GetDictionary(kDefaultAttr, &default_dictionary)) {
|
| + std::string result;
|
| + if (default_dictionary->GetString(entry_name, &result))
|
| + return result;
|
| + }
|
| +
|
| + return std::string();
|
| +}
|
| +
|
| } // anonymous namespace
|
|
|
| namespace chromeos {
|
| @@ -191,26 +221,8 @@ std::string CustomizationDocument::GetLocaleSpecificString(
|
| const std::string& locale,
|
| const std::string& dictionary_name,
|
| const std::string& entry_name) const {
|
| - base::DictionaryValue* dictionary_content = NULL;
|
| - if (!root_.get() ||
|
| - !root_->GetDictionary(dictionary_name, &dictionary_content))
|
| - return std::string();
|
| -
|
| - base::DictionaryValue* locale_dictionary = NULL;
|
| - if (dictionary_content->GetDictionary(locale, &locale_dictionary)) {
|
| - std::string result;
|
| - if (locale_dictionary->GetString(entry_name, &result))
|
| - return result;
|
| - }
|
| -
|
| - base::DictionaryValue* default_dictionary = NULL;
|
| - if (dictionary_content->GetDictionary(kDefaultAttr, &default_dictionary)) {
|
| - std::string result;
|
| - if (default_dictionary->GetString(entry_name, &result))
|
| - return result;
|
| - }
|
| -
|
| - return std::string();
|
| + return GetLocaleSpecificStringImpl(
|
| + root_.get(), locale, dictionary_name, entry_name);
|
| }
|
|
|
| // StartupCustomizationDocument implementation. --------------------------------
|
| @@ -464,6 +476,7 @@ void ServicesCustomizationDocument::OnManifestLoaded() {
|
| UpdateCachedManifest((*it)->profile());
|
| (*it)->SetCurrentApps(
|
| scoped_ptr<base::DictionaryValue>(prefs->DeepCopy()));
|
| + SetOemFolderName((*it)->profile(), *root_);
|
| }
|
| }
|
| }
|
| @@ -541,6 +554,14 @@ bool ServicesCustomizationDocument::GetDefaultApps(
|
| return true;
|
| }
|
|
|
| +std::string ServicesCustomizationDocument::GetOemAppsFolderName(
|
| + const std::string& locale) const {
|
| + if (!IsReady())
|
| + return std::string();
|
| +
|
| + return GetOemAppsFolderNameImpl(locale, *root_);
|
| +}
|
| +
|
| scoped_ptr<base::DictionaryValue>
|
| ServicesCustomizationDocument::GetDefaultAppsInProviderFormat(
|
| const base::DictionaryValue& root) {
|
| @@ -578,6 +599,7 @@ extensions::ExternalLoader* ServicesCustomizationDocument::CreateExternalLoader(
|
| if (IsReady()) {
|
| UpdateCachedManifest(profile);
|
| loader->SetCurrentApps(GetDefaultAppsInProviderFormat(*root_));
|
| + SetOemFolderName(profile, *root_);
|
| } else {
|
| const base::DictionaryValue* root =
|
| profile->GetPrefs()->GetDictionary(kServicesCustomizationKey);
|
| @@ -585,6 +607,7 @@ extensions::ExternalLoader* ServicesCustomizationDocument::CreateExternalLoader(
|
| if (root && root->GetString(kVersionAttr, &version)) {
|
| // If version exists, profile has cached version of customization.
|
| loader->SetCurrentApps(GetDefaultAppsInProviderFormat(*root));
|
| + SetOemFolderName(profile, *root);
|
| } else {
|
| // StartFetching will be called from ServicesCustomizationExternalLoader
|
| // when StartLoading is called. We can't initiate manifest fetch here
|
| @@ -600,4 +623,28 @@ void ServicesCustomizationDocument::OnCustomizationNotFound() {
|
| LoadManifestFromString(kEmptyServicesCustomizationManifest);
|
| }
|
|
|
| +void ServicesCustomizationDocument::SetOemFolderName(
|
| + Profile* profile,
|
| + const base::DictionaryValue& root) {
|
| + app_list::AppListSyncableService* service =
|
| + app_list::AppListSyncableServiceFactory::GetForProfile(profile);
|
| + if (!service) {
|
| + LOG(WARNING) << "AppListSyncableService is not ready for setting OEM "
|
| + "folder name";
|
| + return;
|
| + }
|
| +
|
| + std::string locale = g_browser_process->GetApplicationLocale();
|
| + std::string name = GetOemAppsFolderNameImpl(locale, root);
|
| + if (!name.empty())
|
| + service->SetOemFolderName(name);
|
| +}
|
| +
|
| +std::string ServicesCustomizationDocument::GetOemAppsFolderNameImpl(
|
| + const std::string& locale,
|
| + const base::DictionaryValue& root) const {
|
| + return GetLocaleSpecificStringImpl(
|
| + &root, locale, kLocalizedContent, kDefaultAppsFolderName);
|
| +}
|
| +
|
| } // namespace chromeos
|
|
|