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 |