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

Unified Diff: components/doodle/doodle_types.cc

Issue 2743273002: [Doodle] Don't create invalid DoodleImages or DoodleConfigs (Closed)
Patch Set: add checks for absence of optional images Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/doodle/doodle_types.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/doodle/doodle_types.cc
diff --git a/components/doodle/doodle_types.cc b/components/doodle/doodle_types.cc
index 0829ff7a7ca253e2aaa9097a8708315c74005961..288c95f98106b6ab1aadb4f06fc0624ce1418baf 100644
--- a/components/doodle/doodle_types.cc
+++ b/components/doodle/doodle_types.cc
@@ -66,14 +66,14 @@ base::Optional<DoodleImage> ParseImage(const base::DictionaryValue& parent_dict,
base::Optional<DoodleImage> DoodleImage::FromDictionary(
const base::DictionaryValue& dict,
const base::Optional<GURL>& base_url) {
- DoodleImage image;
-
// The URL is the only required field.
- image.url = ParseUrl(dict, "url", base_url);
- if (!image.url.is_valid()) {
+ GURL url = ParseUrl(dict, "url", base_url);
+ if (!url.is_valid()) {
return base::nullopt;
}
+ DoodleImage image(url);
+
dict.GetInteger("height", &image.height);
dict.GetInteger("width", &image.width);
dict.GetBoolean("is_animated_gif", &image.is_animated_gif);
@@ -82,8 +82,11 @@ base::Optional<DoodleImage> DoodleImage::FromDictionary(
return image;
}
-DoodleImage::DoodleImage()
- : height(0), width(0), is_animated_gif(false), is_cta(false) {}
+DoodleImage::DoodleImage(const GURL& url)
+ : url(url), height(0), width(0), is_animated_gif(false), is_cta(false) {
+ DCHECK(url.is_valid());
+}
+
DoodleImage::~DoodleImage() = default;
bool DoodleImage::operator==(const DoodleImage& other) const {
@@ -95,7 +98,9 @@ bool DoodleImage::operator!=(const DoodleImage& other) const {
return !(*this == other);
}
-DoodleConfig::DoodleConfig() : doodle_type(DoodleType::UNKNOWN) {}
+DoodleConfig::DoodleConfig(DoodleType doodle_type,
+ const DoodleImage& large_image)
+ : doodle_type(doodle_type), large_image(large_image) {}
DoodleConfig::DoodleConfig(const DoodleConfig& config) = default;
DoodleConfig::~DoodleConfig() = default;
@@ -103,8 +108,6 @@ DoodleConfig::~DoodleConfig() = default;
base::Optional<DoodleConfig> DoodleConfig::FromDictionary(
const base::DictionaryValue& dict,
const base::Optional<GURL>& base_url) {
- DoodleConfig doodle;
-
// The |large_image| field is required (it's the "default" representation for
// the doodle).
base::Optional<DoodleImage> large_image =
@@ -112,11 +115,11 @@ base::Optional<DoodleConfig> DoodleConfig::FromDictionary(
if (!large_image.has_value()) {
return base::nullopt;
}
- doodle.large_image = large_image.value();
std::string type_str;
dict.GetString("doodle_type", &type_str);
- doodle.doodle_type = DoodleTypeFromString(type_str);
+
+ DoodleConfig doodle(DoodleTypeFromString(type_str), large_image.value());
dict.GetString("alt_text", &doodle.alt_text);
« no previous file with comments | « components/doodle/doodle_types.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698