| 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 eb75919be1267f70801a888f55e547e9e18e1e8b..0e500aec9e2c2bce3f123bbd36cd2b8d1ecc2f07 100644
|
| --- a/content/renderer/manifest/manifest_parser_unittest.cc
|
| +++ b/content/renderer/manifest/manifest_parser_unittest.cc
|
| @@ -10,75 +10,154 @@
|
|
|
| namespace content {
|
|
|
| -TEST(ManifestParserTest, EmptyStringNull) {
|
| - Manifest manifest = ManifestParser::Parse("");
|
| +class ManifestParserTest : public testing::Test {
|
| + protected:
|
| + ManifestParserTest() {}
|
| + virtual ~ManifestParserTest() {}
|
| +
|
| + Manifest ParseManifest(const base::StringPiece& json,
|
| + const GURL& document_url = default_document_url,
|
| + const GURL& manifest_url = default_manifest_url) {
|
| + return ManifestParser::Parse(json, document_url, manifest_url);
|
| + }
|
| +
|
| + static const GURL default_document_url;
|
| + static const GURL default_manifest_url;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(ManifestParserTest);
|
| +};
|
| +
|
| +const GURL ManifestParserTest::default_document_url(
|
| + "http://foo.com/index.html");
|
| +const GURL ManifestParserTest::default_manifest_url(
|
| + "http://foo.com/manifest.json");
|
| +
|
| +TEST_F(ManifestParserTest, EmptyStringNull) {
|
| + Manifest manifest = ParseManifest("");
|
|
|
| // A parsing error is equivalent to an empty manifest.
|
| ASSERT_TRUE(manifest.IsEmpty());
|
| ASSERT_TRUE(manifest.name.is_null());
|
| ASSERT_TRUE(manifest.short_name.is_null());
|
| + ASSERT_TRUE(manifest.start_url.is_empty());
|
| }
|
|
|
| -TEST(ManifestParserTest, ValidNoContentParses) {
|
| - Manifest manifest = ManifestParser::Parse("{}");
|
| +TEST_F(ManifestParserTest, ValidNoContentParses) {
|
| + Manifest manifest = ParseManifest("{}");
|
|
|
| // Check that all the fields are null in that case.
|
| ASSERT_TRUE(manifest.IsEmpty());
|
| ASSERT_TRUE(manifest.name.is_null());
|
| ASSERT_TRUE(manifest.short_name.is_null());
|
| + ASSERT_TRUE(manifest.start_url.is_empty());
|
| }
|
|
|
| -TEST(ManifestParserTest, NameParseRules) {
|
| +TEST_F(ManifestParserTest, NameParseRules) {
|
| // Smoke test.
|
| {
|
| - Manifest manifest = ManifestParser::Parse("{ \"name\": \"foo\" }");
|
| + Manifest manifest = ParseManifest("{ \"name\": \"foo\" }");
|
| ASSERT_TRUE(EqualsASCII(manifest.name.string(), "foo"));
|
| }
|
|
|
| // Trim whitespaces.
|
| {
|
| - Manifest manifest = ManifestParser::Parse("{ \"name\": \" foo \" }");
|
| + Manifest manifest = ParseManifest("{ \"name\": \" foo \" }");
|
| ASSERT_TRUE(EqualsASCII(manifest.name.string(), "foo"));
|
| }
|
|
|
| // Don't parse if name isn't a string.
|
| {
|
| - Manifest manifest = ManifestParser::Parse("{ \"name\": {} }");
|
| + Manifest manifest = ParseManifest("{ \"name\": {} }");
|
| ASSERT_TRUE(manifest.name.is_null());
|
| }
|
|
|
| // Don't parse if name isn't a string.
|
| {
|
| - Manifest manifest = ManifestParser::Parse("{ \"name\": 42 }");
|
| + Manifest manifest = ParseManifest("{ \"name\": 42 }");
|
| ASSERT_TRUE(manifest.name.is_null());
|
| }
|
| }
|
|
|
| -TEST(ManifestParserTest, ShortNameParseRules) {
|
| +TEST_F(ManifestParserTest, ShortNameParseRules) {
|
| // Smoke test.
|
| {
|
| - Manifest manifest = ManifestParser::Parse("{ \"short_name\": \"foo\" }");
|
| + Manifest manifest = ParseManifest("{ \"short_name\": \"foo\" }");
|
| ASSERT_TRUE(EqualsASCII(manifest.short_name.string(), "foo"));
|
| }
|
|
|
| // Trim whitespaces.
|
| {
|
| - Manifest manifest =
|
| - ManifestParser::Parse("{ \"short_name\": \" foo \" }");
|
| + Manifest manifest = ParseManifest("{ \"short_name\": \" foo \" }");
|
| ASSERT_TRUE(EqualsASCII(manifest.short_name.string(), "foo"));
|
| }
|
|
|
| // Don't parse if name isn't a string.
|
| {
|
| - Manifest manifest = ManifestParser::Parse("{ \"short_name\": {} }");
|
| + Manifest manifest = ParseManifest("{ \"short_name\": {} }");
|
| ASSERT_TRUE(manifest.short_name.is_null());
|
| }
|
|
|
| // Don't parse if name isn't a string.
|
| {
|
| - Manifest manifest = ManifestParser::Parse("{ \"short_name\": 42 }");
|
| + Manifest manifest = ParseManifest("{ \"short_name\": 42 }");
|
| ASSERT_TRUE(manifest.short_name.is_null());
|
| }
|
| }
|
|
|
| +TEST_F(ManifestParserTest, StartURLParseRules) {
|
| + // Smoke test.
|
| + {
|
| + Manifest manifest = ParseManifest("{ \"start_url\": \"land.html\" }");
|
| + ASSERT_EQ(manifest.start_url.spec(),
|
| + default_document_url.Resolve("land.html").spec());
|
| + }
|
| +
|
| + // Whitespaces.
|
| + {
|
| + Manifest manifest = ParseManifest("{ \"start_url\": \" land.html \" }");
|
| + ASSERT_EQ(manifest.start_url.spec(),
|
| + default_document_url.Resolve("land.html").spec());
|
| + }
|
| +
|
| + // Don't parse if property isn't a string.
|
| + {
|
| + Manifest manifest = ParseManifest("{ \"start_url\": {} }");
|
| + ASSERT_TRUE(manifest.start_url.is_empty());
|
| + }
|
| +
|
| + // Don't parse if property isn't a string.
|
| + {
|
| + Manifest manifest = ParseManifest("{ \"start_url\": 42 }");
|
| + ASSERT_TRUE(manifest.start_url.is_empty());
|
| + }
|
| +
|
| + // Absolute start_url, same origin with document.
|
| + {
|
| + Manifest manifest =
|
| + ParseManifest("{ \"start_url\": \"http://foo.com/land.html\" }",
|
| + GURL("http://foo.com/manifest.json"),
|
| + GURL("http://foo.com/index.html"));
|
| + ASSERT_EQ(manifest.start_url.spec(), "http://foo.com/land.html");
|
| + }
|
| +
|
| + // Absolute start_url, cross origin with document.
|
| + {
|
| + Manifest manifest =
|
| + ParseManifest("{ \"start_url\": \"http://bar.com/land.html\" }",
|
| + GURL("http://foo.com/manifest.json"),
|
| + GURL("http://foo.com/index.html"));
|
| + ASSERT_TRUE(manifest.start_url.is_empty());
|
| + }
|
| +
|
| + // Resolving has to happen based on the manifest_url.
|
| + {
|
| + Manifest manifest =
|
| + ParseManifest("{ \"start_url\": \"land.html\" }",
|
| + GURL("http://foo.com/landing/manifest.json"),
|
| + GURL("http://foo.com/index.html"));
|
| + ASSERT_EQ(manifest.start_url.spec(), "http://foo.com/landing/land.html");
|
| + }
|
| +}
|
| +
|
| } // namespace content
|
|
|