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

Unified Diff: content/renderer/manifest/manifest_parser_unittest.cc

Issue 590563002: Add support for icons.{src,type,density} in Manifest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: EXPORT Manifest::Icon Created 6 years, 3 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 | « content/renderer/manifest/manifest_parser.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/manifest/manifest_parser_unittest.cc
diff --git a/content/renderer/manifest/manifest_parser_unittest.cc b/content/renderer/manifest/manifest_parser_unittest.cc
index 12ea5d61f365365b62a49a08dbaf561893852863..c2ce8da7ef982c7fb7f672eacd9d040446ac7907 100644
--- a/content/renderer/manifest/manifest_parser_unittest.cc
+++ b/content/renderer/manifest/manifest_parser_unittest.cc
@@ -325,4 +325,171 @@ TEST_F(ManifestParserTest, OrientationParserRules) {
}
}
+TEST_F(ManifestParserTest, IconsParseRules) {
+ // Smoke test: if no icon, empty list.
+ {
+ Manifest manifest = ParseManifest("{ \"icons\": [] }");
+ EXPECT_EQ(manifest.icons.size(), 0u);
+ EXPECT_TRUE(manifest.IsEmpty());
+ }
+
+ // Smoke test: if empty icon, empty list.
+ {
+ Manifest manifest = ParseManifest("{ \"icons\": [ {} ] }");
+ EXPECT_EQ(manifest.icons.size(), 0u);
+ EXPECT_TRUE(manifest.IsEmpty());
+ }
+
+ // Smoke test: icon with invalid src, empty list.
+ {
+ Manifest manifest = ParseManifest("{ \"icons\": [ { \"icons\": [] } ] }");
+ EXPECT_EQ(manifest.icons.size(), 0u);
+ EXPECT_TRUE(manifest.IsEmpty());
+ }
+
+ // Smoke test: if icon with empty src, it will be present in the list.
+ {
+ Manifest manifest = ParseManifest("{ \"icons\": [ { \"src\": \"\" } ] }");
+ EXPECT_EQ(manifest.icons.size(), 1u);
+ EXPECT_EQ(manifest.icons[0].src.spec(), "http://foo.com/index.html");
+ EXPECT_FALSE(manifest.IsEmpty());
+ }
+
+ // Smoke test: if one icons with valid src, it will be present in the list.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [{ \"src\": \"foo.jpg\" }] }");
+ EXPECT_EQ(manifest.icons.size(), 1u);
+ EXPECT_EQ(manifest.icons[0].src.spec(), "http://foo.com/foo.jpg");
+ EXPECT_FALSE(manifest.IsEmpty());
+ }
+}
+
+TEST_F(ManifestParserTest, IconSrcParseRules) {
+ // Smoke test.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"foo.png\" } ] }");
+ EXPECT_EQ(manifest.icons[0].src.spec(),
+ default_document_url.Resolve("foo.png").spec());
+ }
+
+ // Whitespaces.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \" foo.png \" } ] }");
+ EXPECT_EQ(manifest.icons[0].src.spec(),
+ default_document_url.Resolve("foo.png").spec());
+ }
+
+ // Don't parse if property isn't a string.
+ {
+ Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": {} } ] }");
+ EXPECT_TRUE(manifest.icons.empty());
+ }
+
+ // Don't parse if property isn't a string.
+ {
+ Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": 42 } ] }");
+ EXPECT_TRUE(manifest.icons.empty());
+ }
+
+ // Resolving has to happen based on the document_url.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"icons/foo.png\" } ] }",
+ GURL("http://foo.com/landing/index.html"));
+ EXPECT_EQ(manifest.icons[0].src.spec(),
+ "http://foo.com/landing/icons/foo.png");
+ }
+}
+
+TEST_F(ManifestParserTest, IconTypeParseRules) {
+ // Smoke test.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"\", \"type\": \"foo\" } ] }");
+ EXPECT_TRUE(EqualsASCII(manifest.icons[0].type.string(), "foo"));
+ }
+
+ // Trim whitespaces.
+ {
+ Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\","
+ " \"type\": \" foo \" } ] }");
+ EXPECT_TRUE(EqualsASCII(manifest.icons[0].type.string(), "foo"));
+ }
+
+ // Don't parse if property isn't a string.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"\", \"type\": {} } ] }");
+ EXPECT_TRUE(manifest.icons[0].type.is_null());
+ }
+
+ // Don't parse if property isn't a string.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"\", \"type\": 42 } ] }");
+ EXPECT_TRUE(manifest.icons[0].type.is_null());
+ }
+}
+
+TEST_F(ManifestParserTest, IconDensityParseRules) {
+ // Smoke test.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"\", \"density\": 42 } ] }");
+ EXPECT_EQ(manifest.icons[0].density, 42);
+ }
+
+ // Decimal value.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"\", \"density\": 2.5 } ] }");
+ EXPECT_EQ(manifest.icons[0].density, 2.5);
+ }
+
+ // Parse fail if it isn't a float.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"\", \"density\": {} } ] }");
+ EXPECT_EQ(manifest.icons[0].density, Manifest::Icon::kDefaultDensity);
+ }
+
+ // Parse fail if it isn't a float.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"\", \"density\":\"2\" } ] }");
+ EXPECT_EQ(manifest.icons[0].density, Manifest::Icon::kDefaultDensity);
+ }
+
+ // Edge case: 1.0.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"\", \"density\": 1.00 } ] }");
+ EXPECT_EQ(manifest.icons[0].density, 1);
+ }
+
+ // Edge case: values between 0.0 and 1.0 are allowed.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"\", \"density\": 0.42 } ] }");
+ EXPECT_EQ(manifest.icons[0].density, 0.42);
+ }
+
+ // 0 is an invalid value.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"\", \"density\": 0.0 } ] }");
+ EXPECT_EQ(manifest.icons[0].density, Manifest::Icon::kDefaultDensity);
+ }
+
+ // Negative values are invalid.
+ {
+ Manifest manifest =
+ ParseManifest("{ \"icons\": [ {\"src\": \"\", \"density\": -2.5 } ] }");
+ EXPECT_EQ(manifest.icons[0].density, Manifest::Icon::kDefaultDensity);
+ }
+}
+
} // namespace content
« no previous file with comments | « content/renderer/manifest/manifest_parser.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698