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

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

Issue 577673004: Add support for 'start_url' in Manifest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@manifest_manager_content
Patch Set: oups 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 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
« 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