diff options
author | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-21 15:16:42 +0000 |
---|---|---|
committer | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-21 15:16:42 +0000 |
commit | f39a1a56ddea03199aa8f97769f74ae020337bcb (patch) | |
tree | 4552b1c32261ac3a8d6282296c0d46b0054ba96c | |
parent | 79956ff3270f54febb3b23e3d3e5cb7017c97b80 (diff) | |
download | chromium_src-f39a1a56ddea03199aa8f97769f74ae020337bcb.zip chromium_src-f39a1a56ddea03199aa8f97769f74ae020337bcb.tar.gz chromium_src-f39a1a56ddea03199aa8f97769f74ae020337bcb.tar.bz2 |
Update customization manifest reader to match desing doc
BUG=chromium-os:11736
TEST=ServicesCustomizationDocumentTest.* StartupCustomizationDocumentTest.*
Review URL: http://codereview.chromium.org/6541025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75548 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/customization_document.cc | 213 | ||||
-rw-r--r-- | chrome/browser/chromeos/customization_document.h | 109 | ||||
-rw-r--r-- | chrome/browser/chromeos/customization_document_unittest.cc | 168 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/apply_services_customization.cc | 12 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/eula_view.cc | 18 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/wizard_controller.cc | 2 | ||||
-rw-r--r-- | chrome/browser/chromeos/webui/register_page_ui.cc | 11 | ||||
-rw-r--r-- | net/url_request/url_request_file_job.cc | 2 |
8 files changed, 176 insertions, 359 deletions
diff --git a/chrome/browser/chromeos/customization_document.cc b/chrome/browser/chromeos/customization_document.cc index a9d438a..b822cbe 100644 --- a/chrome/browser/chromeos/customization_document.cc +++ b/chrome/browser/chromeos/customization_document.cc @@ -4,50 +4,41 @@ #include "chrome/browser/chromeos/customization_document.h" -#include <string> - #include "base/file_util.h" #include "base/json/json_reader.h" #include "base/logging.h" -#include "base/string_number_conversions.h" -#include "base/values.h" // Manifest attributes names. namespace { const char kVersionAttr[] = "version"; -const char kProductSkuAttr[] = "product_sku"; +const char kDefaultAttr[] = "default"; const char kInitialLocaleAttr[] = "initial_locale"; const char kInitialTimezoneAttr[] = "initial_timezone"; -const char kBackgroundColorAttr[] = "background_color"; const char kRegistrationUrlAttr[] = "registration_url"; +const char kHwidMapAttr[] = "hwidmap"; const char kSetupContentAttr[] = "setup_content"; -const char kContentLocaleAttr[] = "content_locale"; const char kHelpPageAttr[] = "help_page"; const char kEulaPageAttr[] = "eula_page"; -const char kAppMenuAttr[] = "app_menu"; +const char kAppContentAttr[] = "app_content"; const char kInitialStartPageAttr[] = "initial_start_page"; -const char kSectionTitleAttr[] = "section_title"; -const char kWebAppsAttr[] = "web_apps"; const char kSupportPageAttr[] = "support_page"; -const char kExtensionsAttr[] = "extensions"; const char kAcceptedManifestVersion[] = "1.0"; +const char kHWIDPath[] = "/sys/devices/platform/chromeos_acpi/HWID"; + } // anonymous namespace namespace chromeos { // CustomizationDocument implementation. - bool CustomizationDocument::LoadManifestFromFile( const FilePath& manifest_path) { std::string manifest; - bool read_success = file_util::ReadFileToString(manifest_path, &manifest); - if (!read_success) { + if (!file_util::ReadFileToString(manifest_path, &manifest)) return false; - } return LoadManifestFromString(manifest); } @@ -58,152 +49,96 @@ bool CustomizationDocument::LoadManifestFromString( if (root.get() == NULL) return false; DCHECK(root->GetType() == Value::TYPE_DICTIONARY); - return ParseFromJsonValue(static_cast<DictionaryValue*>(root.get())); + if (root->GetType() == Value::TYPE_DICTIONARY) { + root_.reset(static_cast<DictionaryValue*>(root.release())); + std::string result; + if (root_->GetString(kVersionAttr, &result) && + result == kAcceptedManifestVersion) + return true; + + LOG(ERROR) << "Wrong customization manifest version"; + root_.reset(NULL); + } + return false; } -bool CustomizationDocument::ParseFromJsonValue(const DictionaryValue* root) { - // Partner customization manifests share only one required field - - // version string. - version_.clear(); - bool result = root->GetString(kVersionAttr, &version_); - return result && version_ == kAcceptedManifestVersion; +std::string CustomizationDocument::GetLocaleSpecificString( + const std::string& locale, + const std::string& dictionary_name, + const std::string& entry_name) const { + DictionaryValue* dictionary_content = NULL; + if (!root_->GetDictionary(dictionary_name, &dictionary_content)) + return std::string(); + + DictionaryValue* locale_dictionary = NULL; + if (dictionary_content->GetDictionary(locale, &locale_dictionary)) { + std::string result; + if (locale_dictionary->GetString(entry_name, &result)) + return result; + } + + 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(); } // StartupCustomizationDocument implementation. - -bool StartupCustomizationDocument::LoadManifestFromFile( - const FilePath& manifest_path) { - if (CustomizationDocument::LoadManifestFromFile(manifest_path)) { - manifest_path_ = manifest_path; - return true; - } else { +bool StartupCustomizationDocument::LoadManifestFromString( + const std::string& manifest) { + if (!CustomizationDocument::LoadManifestFromString(manifest)) { return false; } -} -bool StartupCustomizationDocument::ParseFromJsonValue( - const DictionaryValue* root) { - if (!CustomizationDocument::ParseFromJsonValue(root)) - return false; + root_->GetString(kInitialLocaleAttr, &initial_locale_); + root_->GetString(kInitialTimezoneAttr, &initial_timezone_); + root_->GetString(kRegistrationUrlAttr, ®istration_url_); - // Required fields. - product_sku_.clear(); - if (!root->GetString(kProductSkuAttr, &product_sku_)) - return false; + std::string hwid; + FilePath hwid_file_path(kHWIDPath); + if (file_util::ReadFileToString(hwid_file_path, &hwid)) { + // If HWID for this machine exists in mapping, use HWID specific settings. + DictionaryValue* hwid_map = NULL; + if (root_->GetDictionary(kHwidMapAttr, &hwid_map)) { + std::string result; + if (hwid_map->GetString(kInitialLocaleAttr, &result)) + initial_locale_ = result; - // Optional fields. - initial_locale_.clear(); - root->GetString(kInitialLocaleAttr, &initial_locale_); - - initial_timezone_.clear(); - root->GetString(kInitialTimezoneAttr, &initial_timezone_); - - std::string background_color_string; - root->GetString(kBackgroundColorAttr, &background_color_string); - if (!background_color_string.empty()) { - if (background_color_string[0] == '#') { - int background_int; - base::HexStringToInt(background_color_string.begin() + 1, - background_color_string.end(), - &background_int); - background_color_ = static_cast<SkColor>(0xff000000 | background_int); - } else { - // Literal color constants are not supported yet. - return false; - } - } + if (hwid_map->GetString(kInitialTimezoneAttr, &result)) + initial_timezone_ = result; - registration_url_.clear(); - root->GetString(kRegistrationUrlAttr, ®istration_url_); - - ListValue* setup_content_value = NULL; - root->GetList(kSetupContentAttr, &setup_content_value); - if (setup_content_value != NULL) { - for (ListValue::const_iterator iter = setup_content_value->begin(); - iter != setup_content_value->end(); - ++iter) { - const DictionaryValue* dict = NULL; - dict = static_cast<const DictionaryValue*>(*iter); - DCHECK(dict->GetType() == Value::TYPE_DICTIONARY); - std::string content_locale; - if (!dict->GetString(kContentLocaleAttr, &content_locale)) - return false; - SetupContent content; - if (!dict->GetString(kHelpPageAttr, &content.help_page_path)) - return false; - if (!dict->GetString(kEulaPageAttr, &content.eula_page_path)) - return false; - setup_content_[content_locale] = content; + // TODO(dpolukhin): read initial locale and timezone from VPD. } } return true; } -FilePath StartupCustomizationDocument::GetSetupPagePath( - const std::string& locale, std::string SetupContent::* page_path) const { - SetupContentMap::const_iterator content_iter = setup_content_.find(locale); - if (content_iter != setup_content_.end()) { - return manifest_path_.DirName().Append(content_iter->second.*page_path); - } else { - return FilePath(); - } +std::string StartupCustomizationDocument::GetHelpPage( + const std::string& locale) const { + return GetLocaleSpecificString(locale, kSetupContentAttr, kHelpPageAttr); } -// ServicesCustomizationDocument implementation. - -bool ServicesCustomizationDocument::ParseFromJsonValue( - const DictionaryValue* root) { - if (!CustomizationDocument::ParseFromJsonValue(root)) - return false; - - // Required app menu settings. - DictionaryValue* app_menu_value = NULL; - root->GetDictionary(kAppMenuAttr, &app_menu_value); - if (app_menu_value == NULL) - return false; - - app_menu_section_title_.clear(); - if (!app_menu_value->GetString(kSectionTitleAttr, - &app_menu_section_title_)) - return false; - app_menu_support_page_url_.clear(); - if (!app_menu_value->GetString(kSupportPageAttr, - &app_menu_support_page_url_)) - return false; - - ListValue* web_apps_value = NULL; - app_menu_value->GetList(kWebAppsAttr, &web_apps_value); - if (!ParseStringListFromJsonValue(web_apps_value, &web_apps_)) - return false; - - ListValue* extensions_value = NULL; - app_menu_value->GetList(kExtensionsAttr, &extensions_value); - if (!ParseStringListFromJsonValue(extensions_value, &extensions_)) - return false; - - // Optional fields. - initial_start_page_url_.clear(); - root->GetString(kInitialStartPageAttr, &initial_start_page_url_); +std::string StartupCustomizationDocument::GetEULAPage( + const std::string& locale) const { + return GetLocaleSpecificString(locale, kSetupContentAttr, kEulaPageAttr); +} - return true; +// ServicesCustomizationDocument implementation. +std::string ServicesCustomizationDocument::GetInitialStartPage( + const std::string& locale) const { + return GetLocaleSpecificString( + locale, kAppContentAttr, kInitialStartPageAttr); } -bool ServicesCustomizationDocument::ParseStringListFromJsonValue( - const ListValue* list_value, - StringList* string_list) { - if (list_value == NULL || string_list == NULL) - return false; - DCHECK(list_value->GetType() == Value::TYPE_LIST); - string_list->clear(); - for (ListValue::const_iterator iter = list_value->begin(); - iter != list_value->end(); - ++iter) { - std::string url; - if ((*iter)->GetAsString(&url)) - string_list->push_back(url); - } - return true; +std::string ServicesCustomizationDocument::GetSupportPage( + const std::string& locale) const { + return GetLocaleSpecificString( + locale, kAppContentAttr, kSupportPageAttr); } } // namespace chromeos diff --git a/chrome/browser/chromeos/customization_document.h b/chrome/browser/chromeos/customization_document.h index ffdd74f..72f5133 100644 --- a/chrome/browser/chromeos/customization_document.h +++ b/chrome/browser/chromeos/customization_document.h @@ -6,13 +6,11 @@ #define CHROME_BROWSER_CHROMEOS_CUSTOMIZATION_DOCUMENT_H_ #pragma once -#include <map> #include <string> -#include <vector> -#include "base/basictypes.h" #include "base/file_path.h" -#include "third_party/skia/include/core/SkColor.h" +#include "base/scoped_ptr.h" +#include "base/values.h" class DictionaryValue; class ListValue; @@ -20,7 +18,6 @@ class ListValue; namespace chromeos { // Base class for OEM customization document classes. - class CustomizationDocument { public: CustomizationDocument() {} @@ -29,130 +26,48 @@ class CustomizationDocument { virtual bool LoadManifestFromFile(const FilePath& manifest_path); virtual bool LoadManifestFromString(const std::string& manifest); - const std::string& version() const { return version_; } - protected: - // Parses manifest's attributes from the JSON dictionary value. - virtual bool ParseFromJsonValue(const DictionaryValue* root); + std::string GetLocaleSpecificString(const std::string& locale, + const std::string& dictionary_name, + const std::string& entry_name) const; - private: - // Manifest version string. - std::string version_; + scoped_ptr<DictionaryValue> root_; + private: DISALLOW_COPY_AND_ASSIGN(CustomizationDocument); }; // OEM startup customization document class. - class StartupCustomizationDocument : public CustomizationDocument { public: StartupCustomizationDocument() {} - virtual bool LoadManifestFromFile(const FilePath& manifest_path); + virtual bool LoadManifestFromString(const std::string& manifest); - const std::string& product_sku() const { return product_sku_; } const std::string& initial_locale() const { return initial_locale_; } const std::string& initial_timezone() const { return initial_timezone_; } - SkColor background_color() const { return background_color_; } const std::string& registration_url() const { return registration_url_; } - FilePath GetHelpPagePath(const std::string& locale) const; - FilePath GetEULAPagePath(const std::string& locale) const; + std::string GetHelpPage(const std::string& locale) const; + std::string GetEULAPage(const std::string& locale) const; private: - struct SetupContent { - SetupContent() {} - SetupContent(const std::string& help_page_path, - const std::string& eula_page_path) - : help_page_path(help_page_path), - eula_page_path(eula_page_path) {} - - // Partner's help page for specific locale. - std::string help_page_path; - // Partner's EULA for specific locale. - std::string eula_page_path; - }; - - typedef std::map<std::string, SetupContent> SetupContentMap; - - virtual bool ParseFromJsonValue(const DictionaryValue* root); - FilePath GetSetupPagePath(const std::string& locale, - std::string SetupContent::* page_path) const; - - // Product SKU. - std::string product_sku_; - - // Initial locale for the OOBE wizard. std::string initial_locale_; - - // Initial timezone for clock setting. std::string initial_timezone_; - - // OOBE wizard and login screen background color. - SkColor background_color_; - - // Partner's product registration page URL. std::string registration_url_; - // Setup content for different locales. - SetupContentMap setup_content_; - - // Copy of manifest full path. - FilePath manifest_path_; - DISALLOW_COPY_AND_ASSIGN(StartupCustomizationDocument); }; -inline FilePath StartupCustomizationDocument::GetHelpPagePath( - const std::string& locale) const { - return GetSetupPagePath(locale, &SetupContent::help_page_path); -} -inline FilePath StartupCustomizationDocument::GetEULAPagePath( - const std::string& locale) const { - return GetSetupPagePath(locale, &SetupContent::eula_page_path); -} - // OEM services customization document class. - class ServicesCustomizationDocument : public CustomizationDocument { public: - typedef std::vector<std::string> StringList; - ServicesCustomizationDocument() {} - const std::string& initial_start_page_url() const { - return initial_start_page_url_; - } - const std::string& app_menu_section_title() const { - return app_menu_section_title_; - } - const std::string& app_menu_support_page_url() const { - return app_menu_support_page_url_; - } - const StringList& web_apps() const { return web_apps_; } - const StringList& extensions() const { return extensions_; } + std::string GetInitialStartPage(const std::string& locale) const; + std::string GetSupportPage(const std::string& locale) const; private: - virtual bool ParseFromJsonValue(const DictionaryValue* root); - - bool ParseStringListFromJsonValue(const ListValue* list_value, - StringList* string_list); - - // Partner's welcome page that is opened right after the OOBE. - std::string initial_start_page_url_; - - // Partner's featured apps URLs list. - StringList web_apps_; - - // Partner's featured extensions URLs list. - StringList extensions_; - - // Title for the partner's apps section in apps menu. - std::string app_menu_section_title_; - - // Partner's apps section support page URL. - std::string app_menu_support_page_url_; - DISALLOW_COPY_AND_ASSIGN(ServicesCustomizationDocument); }; diff --git a/chrome/browser/chromeos/customization_document_unittest.cc b/chrome/browser/chromeos/customization_document_unittest.cc index a19e63a..ddd2798 100644 --- a/chrome/browser/chromeos/customization_document_unittest.cc +++ b/chrome/browser/chromeos/customization_document_unittest.cc @@ -11,71 +11,54 @@ namespace { const char kGoodStartupManifest[] = "{" " \"version\": \"1.0\"," - " \"product_sku\" : \"SKU\"," - " \"initial_locale\" : \"en_US\"," + " \"initial_locale\" : \"en-US\"," " \"initial_timezone\" : \"US/Pacific\"," - " \"background_color\" : \"#880088\"," " \"registration_url\" : \"http://www.google.com\"," - " \"setup_content\" : [" - " {" - " \"content_locale\" : \"en_US\"," - " \"help_page\" : \"setup_content/en_US/help.html\"," - " \"eula_page\" : \"setup_content/en_US/eula.html\"," + " \"setup_content\" : {" + " \"en-US\" : {" + " \"help_page\" : \"file:///opt/oem/help/en-US/help.html\"," + " \"eula_page\" : \"file:///opt/oem/eula/en-US/eula.html\"," " }," - " {" - " \"content_locale\" : \"ru\"," - " \"help_page\" : \"setup_content/ru/help.html\"," - " \"eula_page\" : \"setup_content/ru/eula.html\"," + " \"ru-RU\" : {" + " \"help_page\" : \"file:///opt/oem/help/ru-RU/help.html\"," + " \"eula_page\" : \"file:///opt/oem/eula/ru-RU/eula.html\"," " }," - " ]" - "}"; - -const char kBadStartupManifest1[] = "{}"; -const char kBadStartupManifest2[] = "{ \"version\" : \"1.0\" }"; -const char kBadStartupManifest3[] = "{" - " \"version\" : \"0.0\"," - " \"product_sku\" : \"SKU\"," - "}"; - -const char kBadStartupManifest4[] = "{" - " \"version\" : \"1.0\"," - " \"product_sku\" : \"SKU\"," - " \"setup_content\" : [" - " {" - " \"help_page\" : \"setup_content/en_US/help.html\"," - " \"eula_page\" : \"setup_content/en_US/eula.html\"," + " \"default\" : {" + " \"help_page\" : \"file:///opt/oem/help/en/help.html\"," + " \"eula_page\" : \"file:///opt/oem/eula/en/eula.html\"," " }," - " ]" - "}"; - -const char kBadStartupManifest5[] = "{" - " \"version\" : \"1.0\"," - " \"product_sku\" : \"SKU\"," - " \"setup_content\" : [" - " {" - " \"content_locale\" : \"en_US\"," - " \"eula_page\" : \"setup_content/en_US/eula.html\"," + " }," + " \"hwidmap\" : {" + " \"Mario\" : {" + " \"initial_locale\" : \"ru-RU\"," + " \"initial_timezone\" : \"Europe/Moscow\"," " }," - " ]" + " \"ZGA\" : {" + " \"initial_locale\" : \"jp-JP\"," + " \"initial_timezone\" : \"Asia/Tokyo\"," + " }," + " }," "}"; -const char kGoodServicesManifest[] = "{" - " // Required.\n" +const char kBadManifest[] = "{\"version\": \"1\"}"; + +const char kGoodServicesManifest[] = + "{" " \"version\": \"1.0\"," - " \"app_menu\" : {" - " \"section_title\" : \"App menu title.\"," - " \"web_apps\" : [" - " \"http://localhost/a/1\"," - " \"http://localhost/a/2\"," - " ]," - " \"support_page\": \"http://localhost/h\"," - " \"extensions\": [" - " \"http://localhost/e/1\"," - " \"http://localhost/e/2\"," - " ]," + " \"app_content\" : {" + " \"en-US\" : {" + " \"initial_start_page\": \"http://mario/promo\"," + " \"support_page\": \"http://mario/us\"," + " }," + " \"ru-RU\" : {" + " \"initial_start_page\": \"http://mario/ru/promo\"," + " \"support_page\": \"http://mario/ru\"," + " }," + " \"default\" : {" + " \"initial_start_page\": \"http://mario/global/promo\"," + " \"support_page\": \"http://mario/global\"," + " }," " }," - " // Optional.\n" - " \"initial_start_page\": \"http://localhost/s\"," "}"; } // anonymous namespace @@ -87,53 +70,56 @@ class StartupCustomizationDocumentTest : public testing::Test { chromeos::StartupCustomizationDocument customization_; }; -TEST_F(StartupCustomizationDocumentTest, LoadBadManifestFromString) { - EXPECT_FALSE(customization_.LoadManifestFromString(kBadStartupManifest1)); - EXPECT_FALSE(customization_.LoadManifestFromString(kBadStartupManifest2)); - EXPECT_FALSE(customization_.LoadManifestFromString(kBadStartupManifest3)); - EXPECT_FALSE(customization_.LoadManifestFromString(kBadStartupManifest4)); - EXPECT_FALSE(customization_.LoadManifestFromString(kBadStartupManifest5)); -} - -TEST_F(StartupCustomizationDocumentTest, LoadGoodManifestFromString) { +TEST_F(StartupCustomizationDocumentTest, Basic) { EXPECT_TRUE(customization_.LoadManifestFromString(kGoodStartupManifest)); - EXPECT_EQ(customization_.version(), "1.0"); - EXPECT_EQ(customization_.product_sku(), "SKU"); - EXPECT_EQ(customization_.initial_locale(), "en_US"); + EXPECT_EQ(customization_.initial_locale(), "en-US"); EXPECT_EQ(customization_.initial_timezone(), "US/Pacific"); - EXPECT_EQ(customization_.background_color(), - SkColorSetRGB(0x88, 0x00, 0x88)); EXPECT_EQ(customization_.registration_url(), "http://www.google.com"); - EXPECT_EQ(customization_.GetHelpPagePath("en_US").value(), - "setup_content/en_US/help.html"); - EXPECT_EQ(customization_.GetEULAPagePath("en_US").value(), - "setup_content/en_US/eula.html"); - EXPECT_EQ(customization_.GetHelpPagePath("ru").value(), - "setup_content/ru/help.html"); - EXPECT_EQ(customization_.GetEULAPagePath("ru").value(), - "setup_content/ru/eula.html"); + + EXPECT_EQ(customization_.GetHelpPage("en-US"), + "file:///opt/oem/help/en-US/help.html"); + EXPECT_EQ(customization_.GetHelpPage("ru-RU"), + "file:///opt/oem/help/ru-RU/help.html"); + EXPECT_EQ(customization_.GetHelpPage("jp-JP"), + "file:///opt/oem/help/en/help.html"); + + EXPECT_EQ(customization_.GetEULAPage("en-US"), + "file:///opt/oem/eula/en-US/eula.html"); + EXPECT_EQ(customization_.GetEULAPage("ru-RU"), + "file:///opt/oem/eula/ru-RU/eula.html"); + EXPECT_EQ(customization_.GetEULAPage("jp-JP"), + "file:///opt/oem/eula/en/eula.html"); } -// ServicesCustomizationDocumentTest implementation. +TEST_F(StartupCustomizationDocumentTest, BadManifest) { + EXPECT_FALSE(customization_.LoadManifestFromString(kBadManifest)); +} +// ServicesCustomizationDocumentTest implementation. class ServicesCustomizationDocumentTest : public testing::Test { protected: chromeos::ServicesCustomizationDocument customization_; }; -TEST_F(ServicesCustomizationDocumentTest, LoadBadManifestFromString) { - EXPECT_FALSE(customization_.LoadManifestFromString(kBadStartupManifest1)); - EXPECT_FALSE(customization_.LoadManifestFromString(kBadStartupManifest2)); +TEST_F(ServicesCustomizationDocumentTest, Basic) { + EXPECT_TRUE(customization_.LoadManifestFromString(kGoodServicesManifest)); + + EXPECT_EQ(customization_.GetInitialStartPage("en-US"), + "http://mario/promo"); + EXPECT_EQ(customization_.GetInitialStartPage("ru-RU"), + "http://mario/ru/promo"); + EXPECT_EQ(customization_.GetInitialStartPage("jp-JP"), + "http://mario/global/promo"); + + + EXPECT_EQ(customization_.GetSupportPage("en-US"), + "http://mario/us"); + EXPECT_EQ(customization_.GetSupportPage("ru-RU"), + "http://mario/ru"); + EXPECT_EQ(customization_.GetSupportPage("jp-JP"), + "http://mario/global"); } -TEST_F(ServicesCustomizationDocumentTest, LoadGoodManifestFromString) { - EXPECT_TRUE(customization_.LoadManifestFromString(kGoodServicesManifest)); - EXPECT_EQ(customization_.version(), "1.0"); - EXPECT_EQ(customization_.app_menu_section_title(), "App menu title."); - EXPECT_EQ(customization_.app_menu_support_page_url(), "http://localhost/h"); - EXPECT_EQ(customization_.initial_start_page_url(), "http://localhost/s"); - EXPECT_EQ(customization_.web_apps().front(), "http://localhost/a/1"); - EXPECT_EQ(customization_.web_apps().back(), "http://localhost/a/2"); - EXPECT_EQ(customization_.extensions().front(), "http://localhost/e/1"); - EXPECT_EQ(customization_.extensions().back(), "http://localhost/e/2"); +TEST_F(ServicesCustomizationDocumentTest, BadManifest) { + EXPECT_FALSE(customization_.LoadManifestFromString(kBadManifest)); } diff --git a/chrome/browser/chromeos/login/apply_services_customization.cc b/chrome/browser/chromeos/login/apply_services_customization.cc index 4e51c34..ba27bb4 100644 --- a/chrome/browser/chromeos/login/apply_services_customization.cc +++ b/chrome/browser/chromeos/login/apply_services_customization.cc @@ -22,7 +22,7 @@ namespace { // URL where to fetch OEM services customization manifest from. const char kServicesCustomizationManifestUrl[] = - "file:///mnt/partner_partition/etc/chromeos/services_manifest.json"; + "file:///opt/oem/etc/services_manifest.json"; // Name of local state option that tracks if services customization has been // applied. @@ -152,13 +152,13 @@ void ApplyServicesCustomization::Apply(const std::string& manifest) { } VLOG(1) << "Partner services customizations manifest loaded successfully"; - if (!customization.initial_start_page_url().empty()) { + std::string locale = g_browser_process->GetApplicationLocale(); + std::string initial_start_page = customization.GetInitialStartPage(locale); + if (!initial_start_page.empty()) { // Append partner's start page url to command line so it gets opened // on browser startup. - CommandLine::ForCurrentProcess()->AppendArg( - customization.initial_start_page_url()); - VLOG(1) << "initial_start_page_url: " - << customization.initial_start_page_url(); + CommandLine::ForCurrentProcess()->AppendArg(initial_start_page); + VLOG(1) << "initial_start_page_url: " << initial_start_page; } // TODO(dpolukhin): apply customized apps, exts and support page. diff --git a/chrome/browser/chromeos/login/eula_view.cc b/chrome/browser/chromeos/login/eula_view.cc index 873870c..5cf435a 100644 --- a/chrome/browser/chromeos/login/eula_view.cc +++ b/chrome/browser/chromeos/login/eula_view.cc @@ -293,19 +293,11 @@ static GURL GetOemEulaPagePath() { WizardController::default_controller()->GetCustomization(); if (customization) { std::string locale = g_browser_process->GetApplicationLocale(); - FilePath eula_page_path = customization->GetEULAPagePath(locale); - if (eula_page_path.empty()) { - VLOG(1) << "No eula found for locale: " << locale; - locale = customization->initial_locale(); - eula_page_path = customization->GetEULAPagePath(locale); - } - if (!eula_page_path.empty()) { - const std::string page_path = std::string(chrome::kFileScheme) + - chrome::kStandardSchemeSeparator + eula_page_path.value(); - return GURL(page_path); - } else { - VLOG(1) << "No eula found for locale: " << locale; - } + std::string eula_page = customization->GetEULAPage(locale); + if (!eula_page.empty()) + return GURL(eula_page); + + VLOG(1) << "No eula found for locale: " << locale; } else { LOG(ERROR) << "No manifest found."; } diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc index 88b1bc2..4ca6638 100644 --- a/chrome/browser/chromeos/login/wizard_controller.cc +++ b/chrome/browser/chromeos/login/wizard_controller.cc @@ -68,7 +68,7 @@ const char kDeviceRegistered[] = "DeviceRegistered"; // Path to OEM partner startup customization manifest. const char kStartupCustomizationManifestPath[] = - "/mnt/partner_partition/etc/chromeos/startup_manifest.json"; + "/opt/oem/etc/startup_manifest.json"; // Path to flag file indicating that both parts of OOBE were completed. const char kOobeCompleteFlagFilePath[] = "/home/chronos/.oobe_completed"; diff --git a/chrome/browser/chromeos/webui/register_page_ui.cc b/chrome/browser/chromeos/webui/register_page_ui.cc index f0dbefc..1fc45f5c 100644 --- a/chrome/browser/chromeos/webui/register_page_ui.cc +++ b/chrome/browser/chromeos/webui/register_page_ui.cc @@ -273,16 +273,6 @@ void RegisterPageHandler::SendUserInfo() { #if defined(OS_CHROMEOS) DictionaryValue value; - std::string system_sku; - if (WizardController::default_controller() && - WizardController::default_controller()->GetCustomization()) { - system_sku = WizardController::default_controller()-> - GetCustomization()->product_sku(); - } else { - SkipRegistration("Startup manifest not defined."); - return; - } - chromeos::SystemLibrary* sys_lib = chromeos::CrosLibrary::Get()->GetSystemLibrary(); @@ -295,7 +285,6 @@ void RegisterPageHandler::SendUserInfo() { return; } value.SetString("system_hwqual", system_hwqual); - value.SetString("system_sku", system_sku); value.SetString("system_serial", serial_number); value.SetString("os_language", g_browser_process->GetApplicationLocale()); value.SetString("os_name", kOSName); diff --git a/net/url_request/url_request_file_job.cc b/net/url_request/url_request_file_job.cc index 0f4c423..c8e90c1 100644 --- a/net/url_request/url_request_file_job.cc +++ b/net/url_request/url_request_file_job.cc @@ -126,7 +126,7 @@ URLRequestJob* URLRequestFileJob::Factory(URLRequest* request, static const char* const kLocalAccessWhiteList[] = { "/home/chronos/user/Downloads", "/media", - "/mnt/partner_partition", + "/opt/oem", "/usr/share/chromeos-assets", "/tmp", "/var/log", |