| Index: content/renderer/manifest/manifest_parser.cc
|
| diff --git a/content/renderer/manifest/manifest_parser.cc b/content/renderer/manifest/manifest_parser.cc
|
| index 442e0d8e1be88bcc619c213290ded27fa4faf3c9..bd3f24af951107fb4af1fa2af86bd712147eb2c5 100644
|
| --- a/content/renderer/manifest/manifest_parser.cc
|
| +++ b/content/renderer/manifest/manifest_parser.cc
|
| @@ -276,6 +276,34 @@ std::vector<gfx::Size> ManifestParser::ParseIconSizes(
|
| return sizes;
|
| }
|
|
|
| +std::vector<Manifest::Icon::IconPurpose> ManifestParser::ParseIconPurpose(
|
| + const base::DictionaryValue& icon) {
|
| + base::NullableString16 purpose_str = ParseString(icon, "purpose", NoTrim);
|
| + std::vector<Manifest::Icon::IconPurpose> purposes;
|
| +
|
| + if (purpose_str.is_null())
|
| + return purposes;
|
| +
|
| + std::vector<base::string16> keywords = base::SplitString(
|
| + purpose_str.string(), base::ASCIIToUTF16(" "),
|
| + base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
|
| + for (const base::string16& keyword : keywords) {
|
| + if (LowerCaseEqualsASCII(keyword, "any")) {
|
| + purposes.push_back(Manifest::Icon::IconPurpose::ANY);
|
| + } else if (LowerCaseEqualsASCII(keyword, "badge")) {
|
| + purposes.push_back(Manifest::Icon::IconPurpose::BADGE);
|
| + } else {
|
| + AddErrorInfo("found icon with invalid purpose.");
|
| + }
|
| + }
|
| +
|
| + if (purposes.empty()) {
|
| + purposes.push_back(Manifest::Icon::IconPurpose::ANY);
|
| + }
|
| +
|
| + return purposes;
|
| +}
|
| +
|
| std::vector<Manifest::Icon> ManifestParser::ParseIcons(
|
| const base::DictionaryValue& dictionary) {
|
| std::vector<Manifest::Icon> icons;
|
| @@ -300,6 +328,7 @@ std::vector<Manifest::Icon> ManifestParser::ParseIcons(
|
| continue;
|
| icon.type = ParseIconType(*icon_dictionary);
|
| icon.sizes = ParseIconSizes(*icon_dictionary);
|
| + icon.purpose = ParseIconPurpose(*icon_dictionary);
|
|
|
| icons.push_back(icon);
|
| }
|
|
|