Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/manifest/manifest_parser.h" | 5 #include "content/renderer/manifest/manifest_parser.h" |
| 6 | 6 |
| 7 #include "base/strings/string_util.h" | 7 #include "base/strings/string_util.h" |
| 8 #include "content/public/common/manifest.h" | 8 #include "content/public/common/manifest.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| 11 namespace content { | 11 namespace content { |
| 12 | 12 |
| 13 namespace { | |
| 14 uint32_t extractColor(int64_t color) { | |
|
Bernhard Bauer
2015/07/31 09:58:56
Method names start with capital letters.
Also, co
Lalit Maganti
2015/07/31 10:04:37
Done and added comment for anonymous as well.
| |
| 15 return reinterpret_cast<uint32_t&>(color); | |
| 16 } | |
| 17 } | |
| 18 | |
| 13 class ManifestParserTest : public testing::Test { | 19 class ManifestParserTest : public testing::Test { |
| 14 protected: | 20 protected: |
| 15 ManifestParserTest() {} | 21 ManifestParserTest() {} |
| 16 ~ManifestParserTest() override {} | 22 ~ManifestParserTest() override {} |
| 17 | 23 |
| 18 Manifest ParseManifestWithURLs(const base::StringPiece& data, | 24 Manifest ParseManifestWithURLs(const base::StringPiece& data, |
| 19 const GURL& document_url, | 25 const GURL& document_url, |
| 20 const GURL& manifest_url) { | 26 const GURL& manifest_url) { |
| 21 ManifestParser parser(data, document_url, manifest_url); | 27 ManifestParser parser(data, document_url, manifest_url); |
| 22 parser.Parse(); | 28 parser.Parse(); |
| (...skipping 958 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 981 ParseManifest("{ \"prefer_related_applications\": false }"); | 987 ParseManifest("{ \"prefer_related_applications\": false }"); |
| 982 EXPECT_FALSE(manifest.prefer_related_applications); | 988 EXPECT_FALSE(manifest.prefer_related_applications); |
| 983 EXPECT_EQ(0u, GetErrorCount()); | 989 EXPECT_EQ(0u, GetErrorCount()); |
| 984 } | 990 } |
| 985 } | 991 } |
| 986 | 992 |
| 987 TEST_F(ManifestParserTest, ThemeColorParserRules) { | 993 TEST_F(ManifestParserTest, ThemeColorParserRules) { |
| 988 // Smoke test. | 994 // Smoke test. |
| 989 { | 995 { |
| 990 Manifest manifest = ParseManifest("{ \"theme_color\": \"#FF0000\" }"); | 996 Manifest manifest = ParseManifest("{ \"theme_color\": \"#FF0000\" }"); |
| 991 EXPECT_EQ(manifest.theme_color, 0xFFFF0000); | 997 EXPECT_EQ(extractColor(manifest.theme_color), 0xFFFF0000); |
| 992 EXPECT_FALSE(manifest.IsEmpty()); | 998 EXPECT_FALSE(manifest.IsEmpty()); |
| 993 EXPECT_EQ(0u, GetErrorCount()); | 999 EXPECT_EQ(0u, GetErrorCount()); |
| 994 } | 1000 } |
| 995 | 1001 |
| 996 // Trim whitespaces. | 1002 // Trim whitespaces. |
| 997 { | 1003 { |
| 998 Manifest manifest = ParseManifest("{ \"theme_color\": \" blue \" }"); | 1004 Manifest manifest = ParseManifest("{ \"theme_color\": \" blue \" }"); |
| 999 EXPECT_EQ(manifest.theme_color, 0xFF0000FF); | 1005 EXPECT_EQ(extractColor(manifest.theme_color), 0xFF0000FF); |
| 1000 EXPECT_EQ(0u, GetErrorCount()); | 1006 EXPECT_EQ(0u, GetErrorCount()); |
| 1001 } | 1007 } |
| 1002 | 1008 |
| 1003 // Don't parse if theme_color isn't a string. | 1009 // Don't parse if theme_color isn't a string. |
| 1004 { | 1010 { |
| 1005 Manifest manifest = ParseManifest("{ \"theme_color\": {} }"); | 1011 Manifest manifest = ParseManifest("{ \"theme_color\": {} }"); |
| 1006 EXPECT_EQ(manifest.theme_color, Manifest::kInvalidOrMissingThemeColor); | 1012 EXPECT_EQ(manifest.theme_color, Manifest::kInvalidOrMissingThemeColor); |
| 1007 EXPECT_EQ(1u, GetErrorCount()); | 1013 EXPECT_EQ(1u, GetErrorCount()); |
| 1008 EXPECT_EQ("Manifest parsing error: property 'theme_color' ignored," | 1014 EXPECT_EQ("Manifest parsing error: property 'theme_color' ignored," |
| 1009 " type string expected.", | 1015 " type string expected.", |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1097 EXPECT_EQ(manifest.theme_color, Manifest::kInvalidOrMissingThemeColor); | 1103 EXPECT_EQ(manifest.theme_color, Manifest::kInvalidOrMissingThemeColor); |
| 1098 EXPECT_EQ(1u, GetErrorCount()); | 1104 EXPECT_EQ(1u, GetErrorCount()); |
| 1099 EXPECT_EQ("Manifest parsing error: property 'theme_color' ignored, " | 1105 EXPECT_EQ("Manifest parsing error: property 'theme_color' ignored, " |
| 1100 "'#AABBCC #DDEEFF' is not a valid color.", | 1106 "'#AABBCC #DDEEFF' is not a valid color.", |
| 1101 errors()[0]); | 1107 errors()[0]); |
| 1102 } | 1108 } |
| 1103 | 1109 |
| 1104 // Accept CSS color keyword format. | 1110 // Accept CSS color keyword format. |
| 1105 { | 1111 { |
| 1106 Manifest manifest = ParseManifest("{ \"theme_color\": \"blue\" }"); | 1112 Manifest manifest = ParseManifest("{ \"theme_color\": \"blue\" }"); |
| 1107 EXPECT_EQ(manifest.theme_color, 0xFF0000FF); | 1113 EXPECT_EQ(extractColor(manifest.theme_color), 0xFF0000FF); |
| 1108 EXPECT_EQ(0u, GetErrorCount()); | 1114 EXPECT_EQ(0u, GetErrorCount()); |
| 1109 } | 1115 } |
| 1110 | 1116 |
| 1111 // Accept CSS color keyword format. | 1117 // Accept CSS color keyword format. |
| 1112 { | 1118 { |
| 1113 Manifest manifest = ParseManifest("{ \"theme_color\": \"chartreuse\" }"); | 1119 Manifest manifest = ParseManifest("{ \"theme_color\": \"chartreuse\" }"); |
| 1114 EXPECT_EQ(manifest.theme_color, 0xFF7FFF00); | 1120 EXPECT_EQ(extractColor(manifest.theme_color), 0xFF7FFF00); |
| 1115 EXPECT_EQ(0u, GetErrorCount()); | 1121 EXPECT_EQ(0u, GetErrorCount()); |
| 1116 } | 1122 } |
| 1117 | 1123 |
| 1118 // Accept CSS RGB format. | 1124 // Accept CSS RGB format. |
| 1119 { | 1125 { |
| 1120 Manifest manifest = ParseManifest("{ \"theme_color\": \"#FFF\" }"); | 1126 Manifest manifest = ParseManifest("{ \"theme_color\": \"#FFF\" }"); |
| 1121 EXPECT_EQ(manifest.theme_color, 0xFFFFFFFF); | 1127 EXPECT_EQ(extractColor(manifest.theme_color), 0xFFFFFFFF); |
| 1122 EXPECT_EQ(0u, GetErrorCount()); | 1128 EXPECT_EQ(0u, GetErrorCount()); |
| 1123 } | 1129 } |
| 1124 | 1130 |
| 1125 // Accept CSS RGB format. | 1131 // Accept CSS RGB format. |
| 1126 { | 1132 { |
| 1127 Manifest manifest = ParseManifest("{ \"theme_color\": \"#ABC\" }"); | 1133 Manifest manifest = ParseManifest("{ \"theme_color\": \"#ABC\" }"); |
| 1128 EXPECT_EQ(manifest.theme_color, 0xFFAABBCC); | 1134 EXPECT_EQ(extractColor(manifest.theme_color), 0xFFAABBCC); |
| 1129 EXPECT_EQ(0u, GetErrorCount()); | 1135 EXPECT_EQ(0u, GetErrorCount()); |
| 1130 } | 1136 } |
| 1131 | 1137 |
| 1132 // Accept CSS RRGGBB format. | 1138 // Accept CSS RRGGBB format. |
| 1133 { | 1139 { |
| 1134 Manifest manifest = ParseManifest("{ \"theme_color\": \"#FF0000\" }"); | 1140 Manifest manifest = ParseManifest("{ \"theme_color\": \"#FF0000\" }"); |
| 1135 EXPECT_EQ(manifest.theme_color, 0xFFFF0000); | 1141 EXPECT_EQ(extractColor(manifest.theme_color), 0xFFFF0000); |
| 1136 EXPECT_EQ(0u, GetErrorCount()); | 1142 EXPECT_EQ(0u, GetErrorCount()); |
| 1137 } | 1143 } |
| 1138 } | 1144 } |
| 1139 | 1145 |
| 1140 TEST_F(ManifestParserTest, GCMSenderIDParseRules) { | 1146 TEST_F(ManifestParserTest, GCMSenderIDParseRules) { |
| 1141 // Smoke test. | 1147 // Smoke test. |
| 1142 { | 1148 { |
| 1143 Manifest manifest = ParseManifest("{ \"gcm_sender_id\": \"foo\" }"); | 1149 Manifest manifest = ParseManifest("{ \"gcm_sender_id\": \"foo\" }"); |
| 1144 EXPECT_TRUE(base::EqualsASCII(manifest.gcm_sender_id.string(), "foo")); | 1150 EXPECT_TRUE(base::EqualsASCII(manifest.gcm_sender_id.string(), "foo")); |
| 1145 EXPECT_EQ(0u, GetErrorCount()); | 1151 EXPECT_EQ(0u, GetErrorCount()); |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 1165 Manifest manifest = ParseManifest("{ \"gcm_sender_id\": 42 }"); | 1171 Manifest manifest = ParseManifest("{ \"gcm_sender_id\": 42 }"); |
| 1166 EXPECT_TRUE(manifest.gcm_sender_id.is_null()); | 1172 EXPECT_TRUE(manifest.gcm_sender_id.is_null()); |
| 1167 EXPECT_EQ(1u, GetErrorCount()); | 1173 EXPECT_EQ(1u, GetErrorCount()); |
| 1168 EXPECT_EQ("Manifest parsing error: property 'gcm_sender_id' ignored," | 1174 EXPECT_EQ("Manifest parsing error: property 'gcm_sender_id' ignored," |
| 1169 " type string expected.", | 1175 " type string expected.", |
| 1170 errors()[0]); | 1176 errors()[0]); |
| 1171 } | 1177 } |
| 1172 } | 1178 } |
| 1173 | 1179 |
| 1174 } // namespace content | 1180 } // namespace content |
| OLD | NEW |