summaryrefslogtreecommitdiff
path: root/chromium/content/renderer/manifest/manifest_parser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/renderer/manifest/manifest_parser.cc')
-rw-r--r--chromium/content/renderer/manifest/manifest_parser.cc28
1 files changed, 18 insertions, 10 deletions
diff --git a/chromium/content/renderer/manifest/manifest_parser.cc b/chromium/content/renderer/manifest/manifest_parser.cc
index faf66e6d451..3f4a29fb8b9 100644
--- a/chromium/content/renderer/manifest/manifest_parser.cc
+++ b/chromium/content/renderer/manifest/manifest_parser.cc
@@ -7,7 +7,6 @@
#include <stddef.h>
#include "base/json/json_reader.h"
-#include "base/memory/ptr_util.h"
#include "base/strings/nullable_string16.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
@@ -15,13 +14,14 @@
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "content/public/common/manifest.h"
+#include "content/public/common/manifest_share_target_util.h"
#include "content/public/common/manifest_util.h"
#include "content/renderer/manifest/manifest_uma_util.h"
-#include "third_party/WebKit/public/platform/WebColor.h"
-#include "third_party/WebKit/public/platform/WebIconSizesParser.h"
-#include "third_party/WebKit/public/platform/WebSize.h"
-#include "third_party/WebKit/public/platform/WebString.h"
-#include "third_party/WebKit/public/web/WebCSSParser.h"
+#include "third_party/blink/public/platform/web_color.h"
+#include "third_party/blink/public/platform/web_icon_sizes_parser.h"
+#include "third_party/blink/public/platform/web_size.h"
+#include "third_party/blink/public/platform/web_string.h"
+#include "third_party/blink/public/web/web_css_parser.h"
#include "ui/gfx/geometry/size.h"
namespace content {
@@ -347,9 +347,18 @@ std::vector<Manifest::Icon> ManifestParser::ParseIcons(
return icons;
}
-base::NullableString16 ManifestParser::ParseShareTargetURLTemplate(
+GURL ManifestParser::ParseShareTargetURLTemplate(
const base::DictionaryValue& share_target) {
- return ParseString(share_target, "url_template", Trim);
+ GURL url_template = ParseURL(share_target, "url_template", manifest_url_,
+ ParseURLOriginRestrictions::kSameOriginOnly);
+ if (!ValidateWebShareUrlTemplate(url_template)) {
+ AddErrorInfo(
+ "property 'url_template' ignored. Placeholders have incorrect "
+ "syntax.");
+ return GURL();
+ }
+
+ return url_template;
}
base::Optional<Manifest::ShareTarget> ManifestParser::ParseShareTarget(
@@ -362,9 +371,8 @@ base::Optional<Manifest::ShareTarget> ManifestParser::ParseShareTarget(
dictionary.GetDictionary("share_target", &share_target_dict);
share_target.url_template = ParseShareTargetURLTemplate(*share_target_dict);
- if (share_target.url_template.is_null()) {
+ if (share_target.url_template.is_empty())
return base::nullopt;
- }
return base::Optional<Manifest::ShareTarget>(share_target);
}