blob: ffdd74fb39506184e7d57178fc05147da404cc6d [file] [log] [blame]
// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_CUSTOMIZATION_DOCUMENT_H_
#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"
class DictionaryValue;
class ListValue;
namespace chromeos {
// Base class for OEM customization document classes.
class CustomizationDocument {
public:
CustomizationDocument() {}
virtual ~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);
private:
// Manifest version string.
std::string version_;
DISALLOW_COPY_AND_ASSIGN(CustomizationDocument);
};
// OEM startup customization document class.
class StartupCustomizationDocument : public CustomizationDocument {
public:
StartupCustomizationDocument() {}
virtual bool LoadManifestFromFile(const FilePath& manifest_path);
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;
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_; }
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);
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_CUSTOMIZATION_DOCUMENT_H_