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

Side by Side Diff: content/renderer/manifest/manifest_parser_unittest.cc

Issue 1246953002: content: make theme_color more resilient to casting issues (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix unit tests Created 5 years, 4 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 unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW
« content/renderer/manifest/manifest_parser.cc ('K') | « content/renderer/manifest/manifest_parser.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698