summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-21 15:16:42 +0000
committerdpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-21 15:16:42 +0000
commitf39a1a56ddea03199aa8f97769f74ae020337bcb (patch)
tree4552b1c32261ac3a8d6282296c0d46b0054ba96c
parent79956ff3270f54febb3b23e3d3e5cb7017c97b80 (diff)
downloadchromium_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.cc213
-rw-r--r--chrome/browser/chromeos/customization_document.h109
-rw-r--r--chrome/browser/chromeos/customization_document_unittest.cc168
-rw-r--r--chrome/browser/chromeos/login/apply_services_customization.cc12
-rw-r--r--chrome/browser/chromeos/login/eula_view.cc18
-rw-r--r--chrome/browser/chromeos/login/wizard_controller.cc2
-rw-r--r--chrome/browser/chromeos/webui/register_page_ui.cc11
-rw-r--r--net/url_request/url_request_file_job.cc2
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, &registration_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, &registration_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",