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

Side by Side Diff: chrome/browser/extensions/extension_unittest.cc

Issue 31014: Port DictionaryValue to use string16 instead of wstring. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/extensions/extension.cc ('k') | chrome/browser/extensions/extensions_service.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "base/string_util.h" 5 #include "base/string_util.h"
6 #include "base/path_service.h" 6 #include "base/path_service.h"
7 #include "chrome/browser/extensions/extension.h" 7 #include "chrome/browser/extensions/extension.h"
8 #include "chrome/common/chrome_paths.h" 8 #include "chrome/common/chrome_paths.h"
9 #include "chrome/common/json_value_serializer.h" 9 #include "chrome/common/json_value_serializer.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 25 matching lines...) Expand all
36 static_cast<DictionaryValue*>(serializer.Deserialize(&error))); 36 static_cast<DictionaryValue*>(serializer.Deserialize(&error)));
37 ASSERT_TRUE(valid_value.get()); 37 ASSERT_TRUE(valid_value.get());
38 ASSERT_EQ("", error); 38 ASSERT_EQ("", error);
39 ASSERT_TRUE(extension.InitFromValue(*valid_value, &error)); 39 ASSERT_TRUE(extension.InitFromValue(*valid_value, &error));
40 ASSERT_EQ("", error); 40 ASSERT_EQ("", error);
41 41
42 scoped_ptr<DictionaryValue> input_value; 42 scoped_ptr<DictionaryValue> input_value;
43 43
44 // Test missing and invalid format versions 44 // Test missing and invalid format versions
45 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); 45 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy()));
46 input_value->Remove(Extension::kFormatVersionKey, NULL); 46 input_value->Remove(WideToUTF16Hack(Extension::kFormatVersionKey), NULL);
47 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 47 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
48 EXPECT_EQ(Extension::kInvalidFormatVersionError, error); 48 EXPECT_EQ(Extension::kInvalidFormatVersionError, error);
49 49
50 input_value->SetString(Extension::kFormatVersionKey, "foo"); 50 input_value->SetString(WideToUTF16Hack(Extension::kFormatVersionKey), "foo");
51 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 51 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
52 EXPECT_EQ(Extension::kInvalidFormatVersionError, error); 52 EXPECT_EQ(Extension::kInvalidFormatVersionError, error);
53 53
54 input_value->SetInteger(Extension::kFormatVersionKey, 2); 54 input_value->SetInteger(WideToUTF16Hack(Extension::kFormatVersionKey), 2);
55 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 55 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
56 EXPECT_EQ(Extension::kInvalidFormatVersionError, error); 56 EXPECT_EQ(Extension::kInvalidFormatVersionError, error);
57 57
58 // Test missing and invalid ids 58 // Test missing and invalid ids
59 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); 59 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy()));
60 input_value->Remove(Extension::kIdKey, NULL); 60 input_value->Remove(WideToUTF16Hack(Extension::kIdKey), NULL);
61 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 61 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
62 EXPECT_EQ(Extension::kInvalidIdError, error); 62 EXPECT_EQ(Extension::kInvalidIdError, error);
63 63
64 input_value->SetInteger(Extension::kIdKey, 42); 64 input_value->SetInteger(WideToUTF16Hack(Extension::kIdKey), 42);
65 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 65 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
66 EXPECT_EQ(Extension::kInvalidIdError, error); 66 EXPECT_EQ(Extension::kInvalidIdError, error);
67 67
68 // Test missing and invalid versions 68 // Test missing and invalid versions
69 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); 69 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy()));
70 input_value->Remove(Extension::kVersionKey, NULL); 70 input_value->Remove(WideToUTF16Hack(Extension::kVersionKey), NULL);
71 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 71 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
72 EXPECT_EQ(Extension::kInvalidVersionError, error); 72 EXPECT_EQ(Extension::kInvalidVersionError, error);
73 73
74 input_value->SetInteger(Extension::kVersionKey, 42); 74 input_value->SetInteger(WideToUTF16Hack(Extension::kVersionKey), 42);
75 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 75 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
76 EXPECT_EQ(Extension::kInvalidVersionError, error); 76 EXPECT_EQ(Extension::kInvalidVersionError, error);
77 77
78 // Test missing and invalid names 78 // Test missing and invalid names
79 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); 79 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy()));
80 input_value->Remove(Extension::kNameKey, NULL); 80 input_value->Remove(WideToUTF16Hack(Extension::kNameKey), NULL);
81 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 81 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
82 EXPECT_EQ(Extension::kInvalidNameError, error); 82 EXPECT_EQ(Extension::kInvalidNameError, error);
83 83
84 input_value->SetInteger(Extension::kNameKey, 42); 84 input_value->SetInteger(WideToUTF16Hack(Extension::kNameKey), 42);
85 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 85 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
86 EXPECT_EQ(Extension::kInvalidNameError, error); 86 EXPECT_EQ(Extension::kInvalidNameError, error);
87 87
88 // Test invalid description 88 // Test invalid description
89 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); 89 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy()));
90 input_value->SetInteger(Extension::kDescriptionKey, 42); 90 input_value->SetInteger(WideToUTF16Hack(Extension::kDescriptionKey), 42);
91 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 91 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
92 EXPECT_EQ(Extension::kInvalidDescriptionError, error); 92 EXPECT_EQ(Extension::kInvalidDescriptionError, error);
93 93
94 // Test invalid user scripts list 94 // Test invalid user scripts list
95 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); 95 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy()));
96 input_value->SetInteger(Extension::kContentScriptsKey, 42); 96 input_value->SetInteger(WideToUTF16Hack(Extension::kContentScriptsKey), 42);
97 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 97 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
98 EXPECT_EQ(Extension::kInvalidContentScriptsListError, error); 98 EXPECT_EQ(Extension::kInvalidContentScriptsListError, error);
99 99
100 // Test invalid user script item 100 // Test invalid user script item
101 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); 101 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy()));
102 ListValue* content_scripts = NULL; 102 ListValue* content_scripts = NULL;
103 input_value->GetList(Extension::kContentScriptsKey, &content_scripts); 103 input_value->GetList(WideToUTF16Hack(Extension::kContentScriptsKey),
104 &content_scripts);
104 ASSERT_FALSE(NULL == content_scripts); 105 ASSERT_FALSE(NULL == content_scripts);
105 content_scripts->Set(0, Value::CreateIntegerValue(42)); 106 content_scripts->Set(0, Value::CreateIntegerValue(42));
106 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 107 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
107 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidContentScriptError)); 108 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidContentScriptError));
108 109
109 // Test missing and invalid matches array 110 // Test missing and invalid matches array
110 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); 111 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy()));
111 input_value->GetList(Extension::kContentScriptsKey, &content_scripts); 112 input_value->GetList(WideToUTF16Hack(Extension::kContentScriptsKey),
113 &content_scripts);
112 DictionaryValue* user_script = NULL; 114 DictionaryValue* user_script = NULL;
113 content_scripts->GetDictionary(0, &user_script); 115 content_scripts->GetDictionary(0, &user_script);
114 user_script->Remove(Extension::kMatchesKey, NULL); 116 user_script->Remove(WideToUTF16Hack(Extension::kMatchesKey), NULL);
115 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 117 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
116 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidMatchesError)); 118 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidMatchesError));
117 119
118 user_script->Set(Extension::kMatchesKey, Value::CreateIntegerValue(42)); 120 user_script->Set(WideToUTF16Hack(Extension::kMatchesKey),
121 Value::CreateIntegerValue(42));
119 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 122 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
120 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidMatchesError)); 123 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidMatchesError));
121 124
122 ListValue* matches = new ListValue; 125 ListValue* matches = new ListValue;
123 user_script->Set(Extension::kMatchesKey, matches); 126 user_script->Set(WideToUTF16Hack(Extension::kMatchesKey), matches);
124 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 127 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
125 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidMatchCountError)); 128 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidMatchCountError));
126 129
127 // Test invalid match element 130 // Test invalid match element
128 matches->Set(0, Value::CreateIntegerValue(42)); 131 matches->Set(0, Value::CreateIntegerValue(42));
129 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 132 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
130 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidMatchError)); 133 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidMatchError));
131 134
132 // Test missing and invalid files array 135 // Test missing and invalid files array
133 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); 136 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy()));
134 input_value->GetList(Extension::kContentScriptsKey, &content_scripts); 137 input_value->GetList(WideToUTF16Hack(Extension::kContentScriptsKey),
138 &content_scripts);
135 content_scripts->GetDictionary(0, &user_script); 139 content_scripts->GetDictionary(0, &user_script);
136 user_script->Remove(Extension::kJsKey, NULL); 140 user_script->Remove(WideToUTF16Hack(Extension::kJsKey), NULL);
137 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 141 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
138 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsListError)); 142 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsListError));
139 143
140 user_script->Set(Extension::kJsKey, Value::CreateIntegerValue(42)); 144 user_script->Set(WideToUTF16Hack(Extension::kJsKey),
145 Value::CreateIntegerValue(42));
141 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 146 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
142 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsListError)); 147 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsListError));
143 148
144 ListValue* files = new ListValue; 149 ListValue* files = new ListValue;
145 user_script->Set(Extension::kJsKey, files); 150 user_script->Set(WideToUTF16Hack(Extension::kJsKey), files);
146 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 151 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
147 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsCountError)); 152 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsCountError));
148 153
149 // Test invalid file element 154 // Test invalid file element
150 files->Set(0, Value::CreateIntegerValue(42)); 155 files->Set(0, Value::CreateIntegerValue(42));
151 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 156 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
152 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsError)); 157 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsError));
153 158
154 // Test too many file elements (more than one not yet supported) 159 // Test too many file elements (more than one not yet supported)
155 files->Set(0, Value::CreateStringValue("foo.js")); 160 files->Set(0, Value::CreateStringValue("foo.js"));
156 files->Set(1, Value::CreateStringValue("bar.js")); 161 files->Set(1, Value::CreateStringValue("bar.js"));
157 EXPECT_FALSE(extension.InitFromValue(*input_value, &error)); 162 EXPECT_FALSE(extension.InitFromValue(*input_value, &error));
158 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsCountError)); 163 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidJsCountError));
159 } 164 }
160 165
161 TEST(ExtensionTest, InitFromValueValid) { 166 TEST(ExtensionTest, InitFromValueValid) {
162 #if defined(OS_WIN) 167 #if defined(OS_WIN)
163 FilePath path(FILE_PATH_LITERAL("C:\\foo")); 168 FilePath path(FILE_PATH_LITERAL("C:\\foo"));
164 #elif defined(OS_POSIX) 169 #elif defined(OS_POSIX)
165 FilePath path(FILE_PATH_LITERAL("/foo")); 170 FilePath path(FILE_PATH_LITERAL("/foo"));
166 #endif 171 #endif
167 Extension extension(path); 172 Extension extension(path);
168 std::string error; 173 std::string error;
169 DictionaryValue input_value; 174 DictionaryValue input_value;
170 175
171 // Test minimal extension 176 // Test minimal extension
172 input_value.SetInteger(Extension::kFormatVersionKey, 1); 177 input_value.SetInteger(WideToUTF16Hack(Extension::kFormatVersionKey), 1);
173 input_value.SetString(Extension::kIdKey, 178 input_value.SetString(
174 "00123456789ABCDEF0123456789ABCDEF0123456"); 179 WideToUTF16Hack(Extension::kIdKey),
175 input_value.SetString(Extension::kVersionKey, "1.0.0.0"); 180 ASCIIToUTF16("00123456789ABCDEF0123456789ABCDEF0123456"));
176 input_value.SetString(Extension::kNameKey, "my extension"); 181 input_value.SetString(WideToUTF16Hack(Extension::kVersionKey),
182 ASCIIToUTF16("1.0.0.0"));
183 input_value.SetString(WideToUTF16Hack(Extension::kNameKey),
184 ASCIIToUTF16("my extension"));
177 185
178 EXPECT_TRUE(extension.InitFromValue(input_value, &error)); 186 EXPECT_TRUE(extension.InitFromValue(input_value, &error));
179 EXPECT_EQ("", error); 187 EXPECT_EQ("", error);
180 EXPECT_EQ("00123456789abcdef0123456789abcdef0123456", extension.id()); 188 EXPECT_EQ("00123456789abcdef0123456789abcdef0123456", extension.id());
181 EXPECT_EQ("1.0.0.0", extension.VersionString()); 189 EXPECT_EQ("1.0.0.0", extension.VersionString());
182 EXPECT_EQ("my extension", extension.name()); 190 EXPECT_EQ("my extension", extension.name());
183 EXPECT_EQ("chrome-extension://00123456789abcdef0123456789abcdef0123456/", 191 EXPECT_EQ("chrome-extension://00123456789abcdef0123456789abcdef0123456/",
184 extension.url().spec()); 192 extension.url().spec());
185 EXPECT_EQ(path.value(), extension.path().value()); 193 EXPECT_EQ(path.value(), extension.path().value());
186 } 194 }
187 195
188 TEST(ExtensionTest, GetResourceURLAndPath) { 196 TEST(ExtensionTest, GetResourceURLAndPath) {
189 #if defined(OS_WIN) 197 #if defined(OS_WIN)
190 FilePath path(FILE_PATH_LITERAL("C:\\foo")); 198 FilePath path(FILE_PATH_LITERAL("C:\\foo"));
191 #elif defined(OS_POSIX) 199 #elif defined(OS_POSIX)
192 FilePath path(FILE_PATH_LITERAL("/foo")); 200 FilePath path(FILE_PATH_LITERAL("/foo"));
193 #endif 201 #endif
194 Extension extension(path); 202 Extension extension(path);
195 DictionaryValue input_value; 203 DictionaryValue input_value;
196 input_value.SetInteger(Extension::kFormatVersionKey, 1); 204 input_value.SetInteger(WideToUTF16Hack(Extension::kFormatVersionKey), 1);
197 input_value.SetString(Extension::kIdKey, 205 input_value.SetString(
198 "00123456789ABCDEF0123456789ABCDEF0123456"); 206 WideToUTF16Hack(Extension::kIdKey),
199 input_value.SetString(Extension::kVersionKey, "1.0.0.0"); 207 ASCIIToUTF16("00123456789ABCDEF0123456789ABCDEF0123456"));
200 input_value.SetString(Extension::kNameKey, "my extension"); 208 input_value.SetString(WideToUTF16Hack(Extension::kVersionKey),
209 ASCIIToUTF16("1.0.0.0"));
210 input_value.SetString(WideToUTF16Hack(Extension::kNameKey),
211 ASCIIToUTF16("my extension"));
201 EXPECT_TRUE(extension.InitFromValue(input_value, NULL)); 212 EXPECT_TRUE(extension.InitFromValue(input_value, NULL));
202 213
203 EXPECT_EQ(extension.url().spec() + "bar/baz.js", 214 EXPECT_EQ(extension.url().spec() + "bar/baz.js",
204 Extension::GetResourceURL(extension.url(), "bar/baz.js").spec()); 215 Extension::GetResourceURL(extension.url(), "bar/baz.js").spec());
205 EXPECT_EQ(extension.url().spec() + "baz.js", 216 EXPECT_EQ(extension.url().spec() + "baz.js",
206 Extension::GetResourceURL(extension.url(), "bar/../baz.js").spec()); 217 Extension::GetResourceURL(extension.url(), "bar/../baz.js").spec());
207 EXPECT_EQ(extension.url().spec() + "baz.js", 218 EXPECT_EQ(extension.url().spec() + "baz.js",
208 Extension::GetResourceURL(extension.url(), "../baz.js").spec()); 219 Extension::GetResourceURL(extension.url(), "../baz.js").spec());
209 220
210 EXPECT_EQ(path.Append(FILE_PATH_LITERAL("bar")) 221 EXPECT_EQ(path.Append(FILE_PATH_LITERAL("bar"))
211 .Append(FILE_PATH_LITERAL("baz.js")).value(), 222 .Append(FILE_PATH_LITERAL("baz.js")).value(),
212 Extension::GetResourcePath(extension.path(), "bar/baz.js").value()); 223 Extension::GetResourcePath(extension.path(), "bar/baz.js").value());
213 EXPECT_EQ(path.Append(FILE_PATH_LITERAL("baz.js")).value(), 224 EXPECT_EQ(path.Append(FILE_PATH_LITERAL("baz.js")).value(),
214 Extension::GetResourcePath(extension.path(), "bar/../baz.js") 225 Extension::GetResourcePath(extension.path(), "bar/../baz.js")
215 .value()); 226 .value());
216 EXPECT_EQ(FilePath().value(), 227 EXPECT_EQ(FilePath().value(),
217 Extension::GetResourcePath(extension.path(), "../baz.js").value()); 228 Extension::GetResourcePath(extension.path(), "../baz.js").value());
218 } 229 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension.cc ('k') | chrome/browser/extensions/extensions_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698