Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(831)

Side by Side Diff: content/renderer/manifest/manifest_parser.cc

Issue 2637003002: Add share_target field to Manifest. (Closed)
Patch Set: Changed share_target type to base::Optional, and fixed tests, according to feedback. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/manifest/manifest_parser.h" 5 #include "content/renderer/manifest/manifest_parser.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/json/json_reader.h" 9 #include "base/json/json_reader.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 } 62 }
63 DCHECK(dictionary); 63 DCHECK(dictionary);
64 64
65 manifest_.name = ParseName(*dictionary); 65 manifest_.name = ParseName(*dictionary);
66 manifest_.short_name = ParseShortName(*dictionary); 66 manifest_.short_name = ParseShortName(*dictionary);
67 manifest_.start_url = ParseStartURL(*dictionary); 67 manifest_.start_url = ParseStartURL(*dictionary);
68 manifest_.scope = ParseScope(*dictionary, manifest_.start_url); 68 manifest_.scope = ParseScope(*dictionary, manifest_.start_url);
69 manifest_.display = ParseDisplay(*dictionary); 69 manifest_.display = ParseDisplay(*dictionary);
70 manifest_.orientation = ParseOrientation(*dictionary); 70 manifest_.orientation = ParseOrientation(*dictionary);
71 manifest_.icons = ParseIcons(*dictionary); 71 manifest_.icons = ParseIcons(*dictionary);
72 manifest_.share_target = ParseShareTarget(*dictionary);
72 manifest_.related_applications = ParseRelatedApplications(*dictionary); 73 manifest_.related_applications = ParseRelatedApplications(*dictionary);
73 manifest_.prefer_related_applications = 74 manifest_.prefer_related_applications =
74 ParsePreferRelatedApplications(*dictionary); 75 ParsePreferRelatedApplications(*dictionary);
75 manifest_.theme_color = ParseThemeColor(*dictionary); 76 manifest_.theme_color = ParseThemeColor(*dictionary);
76 manifest_.background_color = ParseBackgroundColor(*dictionary); 77 manifest_.background_color = ParseBackgroundColor(*dictionary);
77 manifest_.gcm_sender_id = ParseGCMSenderID(*dictionary); 78 manifest_.gcm_sender_id = ParseGCMSenderID(*dictionary);
78 79
79 ManifestUmaUtil::ParseSucceeded(manifest_); 80 ManifestUmaUtil::ParseSucceeded(manifest_);
80 } 81 }
81 82
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 icon.type = ParseIconType(*icon_dictionary); 334 icon.type = ParseIconType(*icon_dictionary);
334 icon.sizes = ParseIconSizes(*icon_dictionary); 335 icon.sizes = ParseIconSizes(*icon_dictionary);
335 icon.purpose = ParseIconPurpose(*icon_dictionary); 336 icon.purpose = ParseIconPurpose(*icon_dictionary);
336 337
337 icons.push_back(icon); 338 icons.push_back(icon);
338 } 339 }
339 340
340 return icons; 341 return icons;
341 } 342 }
342 343
344 base::NullableString16 ManifestParser::ParseShareTargetURLTemplate(
345 const base::DictionaryValue& share_target) {
346 return ParseString(share_target, "url_template", Trim);
347 }
348
349 base::Optional<Manifest::ShareTarget> ManifestParser::ParseShareTarget(
350 const base::DictionaryValue& dictionary) {
351 if (!dictionary.HasKey("share_target"))
352 return base::nullopt;
353
354 Manifest::ShareTarget share_target;
355 const base::DictionaryValue* share_target_dict = nullptr;
356 dictionary.GetDictionary("share_target", &share_target_dict);
357 share_target.url_template = ParseShareTargetURLTemplate(*share_target_dict);
358
359 if (share_target.url_template.is_null()) {
360 return base::nullopt;
361 }
362 return base::Optional<Manifest::ShareTarget>(share_target);
363 }
364
343 base::NullableString16 ManifestParser::ParseRelatedApplicationPlatform( 365 base::NullableString16 ManifestParser::ParseRelatedApplicationPlatform(
344 const base::DictionaryValue& application) { 366 const base::DictionaryValue& application) {
345 return ParseString(application, "platform", Trim); 367 return ParseString(application, "platform", Trim);
346 } 368 }
347 369
348 GURL ManifestParser::ParseRelatedApplicationURL( 370 GURL ManifestParser::ParseRelatedApplicationURL(
349 const base::DictionaryValue& application) { 371 const base::DictionaryValue& application) {
350 return ParseURL(application, "url", manifest_url_); 372 return ParseURL(application, "url", manifest_url_);
351 } 373 }
352 374
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 } 443 }
422 444
423 void ManifestParser::AddErrorInfo(const std::string& error_msg, 445 void ManifestParser::AddErrorInfo(const std::string& error_msg,
424 bool critical, 446 bool critical,
425 int error_line, 447 int error_line,
426 int error_column) { 448 int error_column) {
427 errors_.push_back({error_msg, critical, error_line, error_column}); 449 errors_.push_back({error_msg, critical, error_line, error_column});
428 } 450 }
429 451
430 } // namespace content 452 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/manifest/manifest_parser.h ('k') | content/renderer/manifest/manifest_parser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698