Commit 66008000 authored by bauerb@chromium.org's avatar bauerb@chromium.org

Add content pack information to Extension.


BUG=141842
TEST=none

Review URL: https://chromiumcodereview.appspot.com/10782030

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@175506 0039d316-1c4b-4281-b951-d872f2087c98
parent b2d560a6
......@@ -76,6 +76,10 @@
"extension_types": ["extension", "packaged_app", "platform_app"],
"min_manifest_version": 2
},
"content_pack": {
"channel": "dev",
"extension_types": ["extension"]
},
"content_security_policy": {
"channel": "stable",
// Platform apps have a restricted content security policy that cannot be
......
......@@ -1341,6 +1341,13 @@ bool Extension::is_theme() const {
return manifest()->is_theme();
}
ExtensionResource Extension::GetContentPackSiteList() const {
if (content_pack_site_list_.empty())
return ExtensionResource();
return GetResource(content_pack_site_list_);
}
GURL Extension::GetBackgroundURL() const {
if (background_scripts_.empty())
return background_url_;
......@@ -1446,6 +1453,47 @@ FilePath Extension::MaybeNormalizePath(const FilePath& path) {
#endif
}
bool Extension::LoadManagedModeFeatures(string16* error) {
if (!manifest_->HasKey(keys::kContentPack))
return true;
DictionaryValue* content_pack_value = NULL;
if (!manifest_->GetDictionary(keys::kContentPack, &content_pack_value)) {
*error = ASCIIToUTF16(errors::kInvalidContentPack);
return false;
}
if (!LoadManagedModeSites(content_pack_value, error))
return false;
if (!LoadManagedModeConfigurations(content_pack_value, error))
return false;
return true;
}
bool Extension::LoadManagedModeSites(
const DictionaryValue* content_pack_value,
string16* error) {
if (!content_pack_value->HasKey(keys::kContentPackSites))
return true;
FilePath::StringType site_list_str;
if (!content_pack_value->GetString(keys::kContentPackSites, &site_list_str)) {
*error = ASCIIToUTF16(errors::kInvalidContentPackSites);
return false;
}
content_pack_site_list_ = FilePath(site_list_str);
return true;
}
bool Extension::LoadManagedModeConfigurations(
const DictionaryValue* content_pack_value,
string16* error) {
NOTIMPLEMENTED();
return true;
}
// static
bool Extension::IsTrustedId(const std::string& id) {
// See http://b/4946060 for more details.
......@@ -1572,6 +1620,9 @@ bool Extension::InitFromValue(int flags, string16* error) {
if (!LoadThemeFeatures(error))
return false;
if (!LoadManagedModeFeatures(error))
return false;
if (HasMultipleUISurfaces()) {
*error = ASCIIToUTF16(errors::kOneUISurfaceOnly);
return false;
......
......@@ -794,6 +794,9 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
return content_security_policy_;
}
// Content pack related.
ExtensionResource GetContentPackSiteList() const;
GURL GetBackgroundURL() const;
private:
......@@ -939,6 +942,14 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
bool LoadThemeDisplayProperties(const base::DictionaryValue* theme_value,
string16* error);
bool LoadManagedModeFeatures(string16* error);
bool LoadManagedModeSites(
const base::DictionaryValue* content_pack_value,
string16* error);
bool LoadManagedModeConfigurations(
const base::DictionaryValue* content_pack_value,
string16* error);
// Helper function for implementing HasCachedImage/GetCachedImage. A return
// value of NULL means there is no matching image cached (we allow caching an
// empty SkBitmap).
......@@ -1147,6 +1158,9 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// A map of display properties.
scoped_ptr<base::DictionaryValue> theme_display_properties_;
// A file containing a list of sites for Managed Mode.
FilePath content_pack_site_list_;
// The homepage for this extension. Useful if it is not hosted by Google and
// therefore does not have a Gallery URL.
GURL homepage_url_;
......
......@@ -17,6 +17,8 @@ const char kBackgroundScripts[] = "background.scripts";
const char kBrowserAction[] = "browser_action";
const char kChromeURLOverrides[] = "chrome_url_overrides";
const char kCommands[] = "commands";
const char kContentPack[] = "content_pack";
const char kContentPackSites[] = "sites";
const char kContentScripts[] = "content_scripts";
const char kContentSecurityPolicy[] = "content_security_policy";
const char kConvertedFromUserScript[] = "converted_from_user_script";
......@@ -218,6 +220,10 @@ const char kInvalidChromeURLOverrides[] =
"Invalid value for 'chrome_url_overrides'.";
const char kInvalidCommandsKey[] =
"Invalid value for 'commands'.";
const char kInvalidContentPack[] =
"Invalid value for 'content_pack'.";
const char kInvalidContentPackSites[] =
"Invalid value for Content Pack sites - files must be strings.";
const char kInvalidContentScript[] =
"Invalid value for 'content_scripts[*]'.";
const char kInvalidContentSecurityPolicy[] =
......
......@@ -24,6 +24,8 @@ namespace extension_manifest_keys {
extern const char kBrowseURLs[];
extern const char kChromeURLOverrides[];
extern const char kCommands[];
extern const char kContentPack[];
extern const char kContentPackSites[];
extern const char kContentScripts[];
extern const char kContentSecurityPolicy[];
extern const char kConvertedFromUserScript[];
......@@ -197,6 +199,8 @@ namespace extension_manifest_errors {
extern const char kInvalidBrowseURLs[];
extern const char kInvalidChromeURLOverrides[];
extern const char kInvalidCommandsKey[];
extern const char kInvalidContentPack[];
extern const char kInvalidContentPackSites[];
extern const char kInvalidContentScript[];
extern const char kInvalidContentScriptsList[];
extern const char kInvalidContentSecurityPolicy[];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment