Chromium Code Reviews| 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 c2ce8da7ef982c7fb7f672eacd9d040446ac7907..268a74fdda48330a1d55b1ea129e90299d2fbb6b 100644 |
| --- a/content/renderer/manifest/manifest_parser_unittest.cc |
| +++ b/content/renderer/manifest/manifest_parser_unittest.cc |
| @@ -492,4 +492,84 @@ TEST_F(ManifestParserTest, IconDensityParseRules) { |
| } |
| } |
| +TEST_F(ManifestParserTest, IconSizesParseRules) { |
| + // Smoke test. |
| + { |
| + Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," |
| + "\"sizes\": \"42x42\" } ] }"); |
| + EXPECT_EQ(manifest.icons[0].sizes.size(), 1u); |
| + } |
| + |
| + // Trim whitespaces. |
| + { |
| + Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," |
| + "\"sizes\": \" 42x42 \" } ] }"); |
| + EXPECT_EQ(manifest.icons[0].sizes.size(), 1u); |
| + } |
| + |
| + // Don't parse if name isn't a string. |
| + { |
| + Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," |
| + "\"sizes\": {} } ] }"); |
| + EXPECT_EQ(manifest.icons[0].sizes.size(), 0u); |
| + } |
| + |
| + // Don't parse if name isn't a string. |
| + { |
| + Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," |
| + "\"sizes\": 42 } ] }"); |
| + EXPECT_EQ(manifest.icons[0].sizes.size(), 0u); |
|
Avi (use Gerrit)
2014/09/22 15:35:26
Perhaps a test for the edge condition that I asked
mlamouri (slow - plz ping)
2014/09/22 16:26:57
Done.
|
| + } |
| + |
| + // Smoke test: value correctly parsed. |
| + { |
| + Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," |
| + "\"sizes\": \"42x42 48x48\" } ] }"); |
| + EXPECT_EQ(manifest.icons[0].sizes[0], gfx::Size(42, 42)); |
| + EXPECT_EQ(manifest.icons[0].sizes[1], gfx::Size(48, 48)); |
| + } |
| + |
| + // <WIDTH>'x'<HEIGHT> and <WIDTH>'X'<HEIGHT> are equivalent. |
| + { |
| + Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," |
| + "\"sizes\": \"42X42 48X48\" } ] }"); |
| + EXPECT_EQ(manifest.icons[0].sizes[0], gfx::Size(42, 42)); |
| + EXPECT_EQ(manifest.icons[0].sizes[1], gfx::Size(48, 48)); |
| + } |
| + |
| + // Twice the same value is parsed twice. |
| + { |
| + Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," |
| + "\"sizes\": \"42X42 42x42\" } ] }"); |
| + EXPECT_EQ(manifest.icons[0].sizes[0], gfx::Size(42, 42)); |
| + EXPECT_EQ(manifest.icons[0].sizes[1], gfx::Size(42, 42)); |
| + } |
| + |
| + // Width or height can't start with 0. |
| + { |
| + Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," |
| + "\"sizes\": \"004X007 042x00\" } ] }"); |
| + EXPECT_EQ(manifest.icons[0].sizes.size(), 0u); |
| + } |
| + |
| + // Width and height MUST contain digits. |
| + { |
| + Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," |
| + "\"sizes\": \"e4X1.0 55ax1e10\" } ] }"); |
| + EXPECT_EQ(manifest.icons[0].sizes.size(), 0u); |
| + } |
| + |
| + // 'any' is correctly parsed and transformed to gfx::Size(0,0). |
| + { |
| + Manifest manifest = ParseManifest("{ \"icons\": [ {\"src\": \"\"," |
| + "\"sizes\": \"any AnY ANY aNy\" } ] }"); |
| + gfx::Size any = gfx::Size(0, 0); |
| + EXPECT_EQ(manifest.icons[0].sizes.size(), 4u); |
| + EXPECT_EQ(manifest.icons[0].sizes[0], any); |
| + EXPECT_EQ(manifest.icons[0].sizes[1], any); |
| + EXPECT_EQ(manifest.icons[0].sizes[2], any); |
| + EXPECT_EQ(manifest.icons[0].sizes[3], any); |
| + } |
| +} |
| + |
| } // namespace content |